《php mysqli 慢》正文开始,本次阅读大概9分钟。
PHP mysqli 为什么如此慢?
在使用PHP mysqli的时候,很多人会发现它执行起来非常的慢,很多时候我们都需要等待特别久的时间才能得到相应的结果。这究竟是为什么呢?是因为mysqli自身的问题,还是我们写的代码出了问题?
在使用mysqli时,最常见的问题就是查询和数据挖掘的速度过慢。下面我们就来分析一下这个问题:
网络延迟
网络延迟是导致mysqli查询速度过慢的一个主要原因。如果网络速度太慢,或者连接不够稳定的话,那么执行一个查询就需要很长的时间。
//连接mysqli
$connect = mysqli_connect('localhost', 'root', '');
//选择数据库
mysqli_select_db($connect,'dbname');
//设置中文字符集
mysqli_query($connect,'set names utf8');
//查询
$query = mysqli_query($connect,'SELECT*FROM `dept`');
while($row = mysqli_fetch_array($query)) {
//code
}
数据量太大
如果你的数据库表被加载了太多的数据,那么mysqli查询的速度就会变得非常缓慢。如果你需要强制查询的话,那么这个查询可能需要很长时间才能完成。因此,为了避免这个问题,我们需要采用一些策略来减少使用过多的数据。
//连接mysqli
$connect = mysqli_connect('localhost', 'root', '');
//选择数据库
mysqli_select_db($connect,'dbname');
//设置中文字符集
mysqli_query($connect,'set names utf8');
//查询
$query = mysqli_query($connect,'SELECT*FROM `dept` limit 500');
while($row = mysqli_fetch_array($query)) {
//code
}
使用索引
使用索引可以极大地提高mysqli查询的速度。当你在查询数据库时,如果你使用了索引而又没有遇到其他问题,那么你的查询很有可能会很快。
//连接mysqli
$connect = mysqli_connect('localhost', 'root', '');
//选择数据库
mysqli_select_db($connect,'dbname');
//设置中文字符集
mysqli_query($connect,'set names utf8');
//创建索引
mysqli_query($connect,'CREATE INDEX username_index ON userinfo(`username`)');
//查询
$query = mysqli_query($connect,'SELECT*FROM `userinfo` where username="xxx"');
while($row = mysqli_fetch_array($query)) {
//code
}
使用预处理语句
在很多情况下,为了保证mysqli查询的速度可以尽可能地快,我们需要使用预处理语句。如果你将一个查询语句转换为预处理语句,那么每次查询时,你就可以使用一个参数来替代你的查询语句中的某个变量。
//连接mysqli
$connect = mysqli_connect('localhost', 'root', '');
//选择数据库
mysqli_select_db($connect,'dbname');
//设置中文字符集
mysqli_query($connect,'set names utf8');
//使用预处理语句
$stmt = mysqli_prepare($connect,'SELECT*FROM `userinfo` where username=?');
mysqli_stmt_bind_param($stmt,'s',$username);
$username = 'xxx';
mysqli_stmt_execute($stmt);
//获取结果集
mysqli_stmt_store_result($stmt);
$num = mysqli_stmt_num_rows($stmt);
总结
通过以上的介绍,我们可以得出一个结论,每一个mysqli查询问题都有一个相应的解决方法。如果你希望你的查询速度可以更快,那么你就需要对每一个具体的问题进行彻底的分析。
虽然mysqli查询的速度可能会非常缓慢,但是我们可以通过一些方法来尽可能地优化mysqli。如果你仍然感觉mysqli非常慢,那么你需要记住,优化应该是一个持续的过程。