800兆技术
PHP执行MYSQL语句:提高效率、缩短查询用时的方法
最后修改时间:2012年10月17日 20:39:43

 以下内容没有考虑到能否获取数据集,第2、3点不可信!

 

在用PHP执行MYSQL语句时,可通过以下方法缩短查询所用的时间:1)限制获取的数据记录数;2)增加排序命令;3)合理安排各个语句的位置

数据库中有一个记录数为11298的数据库表,先对其进行如下语句的查询,用时如下:

select * from table_11298
查询用时(单位/秒):1.272961139679 → 开始查询时间:1350471390.9973 → 查询完毕时间:1350471392.2703

select * from table_11298 ORDER BY eid
查询用时(单位/秒):3.7096519470215 → 开始查询时间:1350471392.2703 → 查询完毕时间:1350471395.98

select * from table_11298 limit 10
查询用时(单位/秒):0.025991916656494 → 开始查询时间:1350471395.98 → 查询完毕时间:1350471396.006

select * from table_11298 ORDER BY eid limit 10
查询用时(单位/秒):0.0013449192047119 → 开始查询时间:1350471396.006 → 查询完毕时间:1350471396.0074

select * from table_11298 limit 10 ORDER BY eid
查询用时(单位/秒):8.392333984375E-5 → 开始查询时间:1350471396.0074 → 查询完毕时间:1350471396.0075

select * from table_11298 limit 100
查询用时(单位/秒):0.01407790184021 → 开始查询时间:1350471396.0075 → 查询完毕时间:1350471396.0215

select * from table_11298 ORDER BY eid limit 100
查询用时(单位/秒):0.011896848678589 → 开始查询时间:1350471396.0216 → 查询完毕时间:1350471396.0335

select * from table_11298 limit 100 ORDER BY eid
查询用时(单位/秒):0.00013899803161621 → 开始查询时间:1350471396.0335 → 查询完毕时间:1350471396.0336

select * from table_11298 limit 1000
查询用时(单位/秒):0.12866520881653 → 开始查询时间:1350471396.0336 → 查询完毕时间:1350471396.1623

select * from table_11298 ORDER BY eid limit 1000
查询用时(单位/秒):0.12080311775208 → 开始查询时间:1350471396.1623 → 查询完毕时间:1350471396.2831

select * from table_11298 limit 1000 ORDER BY eid
查询用时(单位/秒):0.00030899047851562 → 开始查询时间:1350471396.2831 → 查询完毕时间:1350471396.2834

select * from table_11298 limit 5000
查询用时(单位/秒):0.50094413757324 → 开始查询时间:1350471396.2835 → 查询完毕时间:1350471396.7844

select * from table_11298 ORDER BY eid limit 5000
查询用时(单位/秒):1.2395610809326 → 开始查询时间:1350471396.7844 → 查询完毕时间:1350471398.024

select * from table_11298 limit 5000 ORDER BY eid
查询用时(单位/秒):0.0099718570709229 → 开始查询时间:1350471398.024 → 查询完毕时间:1350471398.034

 (注:以上数据虽然因不同的服务器配置,而有所不同,但规律应该都一样。)

 

从数据可看出,与数据库查询用时有关的因素为:

一、限制记录数——LIMIT

从上面的数据可以看出,限制的记录数越小,查询时间越短。

 

二、增加排序语句——ORDER BY

从上面的数据可以看出,在限制记录数的情况下,增加排序语句能明显降低查询用的时间。

 

三、排序和限制需要需有先后顺序

从上面的数据可以看出,排序语句只有在限制语句之后,才能明显降低查询用时。(个人认为,LIMIT语句放在其他语句之前,效率比较高。)