我的查询非常慢,因为使用了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'");
这个问题有更好的解决方案吗?
答案 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'