mysql查询很慢

时间:2014-04-17 02:29:31

标签: mysql sql

我的查询非常慢,因为使用了ORDER BY。现在我理解为什么它很慢但我不知道如何让它更快。

该表有13,000,000条记录。 (原因很慢)

表30 行13,591,548 数据1.3 GiB 指数265.2 MiB 总计1.5 GiB 开销96 B

$sql3 =  mysql_query("SELECT * FROM config LIMIT 1");
$row3 = mysql_fetch_assoc($sql3);
$log=$row3['con_log'];
$sql2 = mysql_query("SELECT sl_start,sl_id FROM scan_list2 WHERE sl_scanned='0' ORDER BY sl_id LIMIT 40");
while($row2 = mysql_fetch_assoc($sql2)){
echo "crk|".$row2['sl_start']."|".$log."-";
$sl_id = $row2['sl_id'];
mysql_query("UPDATE scan_list2 SET sl_scanned='1' WHERE sl_id='$sl_id'");

这个问题有更好的解决方案吗?

2 个答案:

答案 0 :(得分:0)

首先检查您的表索引。

在php中,您不需要为每40行执行一次更新,运行update然后select然后执行循环以显示来自{{1}的行的信息,像:

select

答案 1 :(得分:0)

尝试通过添加JOIN

来更改UPDATE查询以更新一次更新中的所有记录
UPDATE scan_list2 
INNER JOIN
        (
            SELECT sl_start,sl_id 
            FROM scan_list2 
            WHERE sl_scanned='0' 
            ORDER BY sl_id 
            LIMIT 40
        ) b ON scan_list2.sl_id = b.sl_id 
SET sl_scanned='1'