mysql查询连接和速度/替代数据库解决方案是否必要?

时间:2012-07-11 15:25:01

标签: php mysql sql pdo

我知道你可以在mysql_query()(或mysqli_ ...)内执行10个SQL查询但是与每个执行10 mysql_query()一个SQL查询有什么不同? ?

如果它们不同并且第一个解决方案更有效,我如何在其中的一个查询中使用mysql_fetch_assoc()函数?

如果第一个解决方案允许我将每页的连接数限制为每mysql_query() 1个,那么我认为我将有足够的mysql连接来处理我的流量,但如果没有,那么SQL技术是什么(或其他?)我可以使用它,这将允许我更有效地从PHP连接到我的数据库(所以我可以处理更多的用户)?

我正在使用Apache和PHP 5.4

2 个答案:

答案 0 :(得分:2)

您一次只能发送一个查询... see the docs

  

mysql_query()向与指定link_identifier关联的服务器上的当前活动数据库发送唯一查询(不支持多个查询)。

您可以使用文档中的mysqli_mutli_query ..示例:

$query  = "SELECT CURRENT_USER();";
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5";

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();

答案 1 :(得分:0)

在一次调用mysql_query()和运行10 mysql_query()之间运行10个查询之间的区别在于,在第一种情况下,您只能从最后一个查询中获取结果。但只要你不做新的mysql_connect()就不应该在查询之间重新连接。

另一种方法是使用mysqli_multi_query,这将允许您并行运行多个查询,这将优化一些,但不是很多。

从它的声音来看,您不需要更有效的方式来连接到您的数据库,您需要优化您的查询,排序索引等,或者数据库机器可能只是错误配置或尺寸不足硬件明智。我猜你的实际问题是你的数据库问题太慢了?

只需运行mysql_query(),每次调用一个查询,mysql在与PHP不同的机器上运行,你仍然可以每秒进行数百次MySQL查询而不会出汗。