我现在难以置信的困惑。
我有一个网站,在我的数据库中的多个表中有大量数据。通常这不应该是我读过的问题。显然情况并非如此。
这是我对表格的查询d
SELECT SQL_CALC_FOUND_ROWS
d.id,
d.user__id,
d.submit_date,
d.title,
d.view_count,
d.vote_count
FROM d
WHERE d.submit_date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
AND d.title != 'No Deck Title'
AND d.is_private != 1
ORDER BY d.id DESC
LIMIT 15;
SELECT FOUND_ROWS();
我有一个INDEX()onsubmit_date并且我的PRIMARY_KEYis 是链接到表的外键。iduser__iduseruser.id
运行此查询将需要 30 秒以上的时间。我不知道为什么会这样。我无缘无故地将查询切换为:
DROP temporary table IF EXISTS paging;
CREATE TEMPORARY TABLE paging AS
SELECT SQL_CALC_FOUND_ROWS d.id,
d.user__id,
d.submit_date,
d.title,
d.view_count,
d.vote_count
FROM d
WHERE d.submit_date <= DATE_SUB(NOW(), INTERVAL 24 HOUR)
AND d.title != 'No Title'
AND d.is_private != 1
ORDER BY d.id DESC
LIMIT 15;
SELECT FOUND_ROWS();
SELECT p.id, p.title, p.submit_date, p.view_count, p.vote_count, u.username FROM paging p
INNER JOIN user u on p.user__id = u.id;
根据我在 Workbench 上的最后一次调用,这将在 0.032 秒内提取相同的确切结果集。
有人可以向我解释为什么会发生这种情况,如果这对于具有大量数据的表来说是正常的事情吗?