我注意到我的脚本变得很慢,然后我缩小了问题:这是一个更新查询.奇怪的是SELECT查询非常快.该表有大约600,000个条目.是的,id是UNIQUE PRIMARY KEY.这里有些例子:
SELECT * FROM `tmp_pages_data` WHERE id = 19080 LIMIT 0 , 30
Showing rows 0 - 0 (1 total, Query took 0.0004 sec)
Run Code Online (Sandbox Code Playgroud)
现在更新查询:
UPDATE tmp_pages_data SET page_status = 1 WHERE id = 19080
1 row(s) affected. ( Query took 24.5968 sec )
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,选择非常快,但更新速度很慢.这怎么可能?
我的桌子上有超过100万个条目。
问题在于SELECT查询的速度。这个非常快:
SELECT *
FROM tmp_pages_data
WHERE site_id = 14294
Showing rows 0 - 29 (1,273,042 total, Query took 0.0009 sec)
Run Code Online (Sandbox Code Playgroud)
而且这很慢:
SELECT *
FROM tmp_pages_data
WHERE page_status = 0
Showing rows 0 - 29 (15,394 total, Query took 0.3018 sec)
Run Code Online (Sandbox Code Playgroud)
仅id列上有一个索引,任何选择都不需要。因此,没有site_id或页面状态的索引。
0.30秒的查询非常令人不安,尤其是在有数千个请求时。
那怎么可能呢?我该怎么做才能看到速度变慢了?