繁体   English   中英

什么会影响odbc_fetch_array()的性能

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM