[英]What impacts performance on odbc_fetch_array()
我有一个运行查询的php页面,并显示大约100-200个结果。
$sql = odbc_prepare($connection,$stmt);
odbc_execute($sql);
while ($row = odbc_fetch_array($sql) {
echo $row['col1'].$row['col2'].$row['col3']."<br>";
}
运行大约需要15秒钟,大部分时间似乎都在循环内。 查询本身具有多个联接,我以为会降低odbc_execute()函数的速度,而不是odbc_fetch_array()的速度。
当我调用odbc_fetch_array()时,到底发生了什么? 对性能有什么影响? 查询的复杂性? 返回的数据量? SQL Server的内存/ CPU? PHP服务器的内存/ CPU?
通过在odbc_connect
指定cursor_type
可以提高性能,这将使odbc的提取速度更快。
$ conn = odbc_connect($ dsn,$ user,$ pass,SQL_CUR_USE_ODBC)
如我所见,您正在经历一个循环,结果为100-200,这意味着odbc_fetch_array()
查询odbc_fetch_array()
运行了100-200次。 (可选)您可以使用http://adodb.org/dokuwiki/doku.php?id=v5:userguide:learn_abstraction:basic_query具有getAll()
方法,以一次返回所有数据而无需循环。
与服务器联系的每一行都是造成延迟的原因,而不是查询本身的复杂性。 如果PHP服务器和SQL服务器位于同一网络上,那还不错,但是如果它们位于通过Internet或VPN连接的不同机器上,则它会变得引人注目。
odbc_ *函数没有用于一次获取所有行的选项。 我选择的选项是重新编写代码,以使用PDO和PDO-> fetchall()一次获取所有行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.