0

我知道您可以在一个mysql_query()(或mysqli_...)内执行 10 个 SQL 查询,但这mysql_query()与在每个 SQL 查询中执行 10 个 SQL 查询有何不同?

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

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

我正在使用 Apache 和 PHP 5.4

4

2 回答 2

2

您一次只能发送一个查询...查看文档

mysql_query() 将唯一查询(不支持多个查询)发送到与指定链接标识符关联的服务器上当前活动的数据库。

您可以使用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();
于 2012-07-11T15:27:50.760 回答
0

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

另一种方法是使用mysqli_multi_query,它可以让您并行运行多个查询,这将对其进行一些优化,但不是很多。

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

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

于 2012-07-11T15:36:50.297 回答