我知道你可以在mysql_query()
(或mysqli_
…)中执行10个SQL查询,但这与在每个mysql_query()
中执行一个SQL查询有什么不同?
如果它们不同,并且第一个解决方案更高效,我将如何在其中一个查询上使用mysql_fetch_assoc()
函数?
如果第一个解决方案允许我将每页的连接数限制为每个mysql_query()
1个,那么我认为我将有足够的mysql连接来处理我的流量,但如果没有,我可以使用什么SQL技术(或其他技术)来更有效地从PHP连接到我的数据库(这样我就可以处理更多的用户)?
我使用的是Apache和PHP 5.4
一次只能发送一个查询。。。请参阅文档
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("%sn", $row[0]);
}
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-----------------n");
}
} while ($mysqli->next_result());
}
/* close connection */
$mysqli->close();
在对mysql_query()的一次调用中运行10个查询与运行10个mysql_query)的区别在于,在第一种情况下,您只能从最后一个查询中获得结果。但是,只要你不做一个新的mysql_connect(),它就不应该在查询之间重新连接。
另一种选择是使用mysqli_multi_query,它将允许您并行运行多个查询,这将对其进行一些优化,但不是全部优化。
从声音上看,你不需要更有效的方式来连接数据库,你要么需要优化查询、排序索引等,要么数据库机器只是配置错误或硬件尺寸不足。我猜你的实际问题是你的数据库问题太慢了?
只需使用mysql_query()运行,每次调用一个查询,mysql在与PHP独立的机器上运行,您仍然可以每秒执行数百个mysql查询,而不必担心。