我在使用innodb表调试问题时遇到问题。
我有一个非常强大的机器32核心氙设置,72gb ram,8 sas驱动器raid 10.硬件不是问题:)整个db也加载在innodb缓冲池中。一般来说,在这台机器上的所有数据库中,一切都快速闪电。
我的问题:
我有一张约600万行的表。
site_id, site_domain, site_date, site_ip, etc etc
我已将索引添加到site_id,site_domain,site_date和其他一些列。 all indexes screenshot
site_date
是INT (11)
列,我存储时间戳。非常基本的东西。
我遇到的问题是当我运行一个简单的查询来获得一些结果时,我使用ORDER BY site_date DESC
。
site_date列以某种方式让它超级慢,但只有一些ID,这让我感到困惑。
Example: (7812 being a slow ID here)
SELECT site_domain
FROM sites
WHERE site_isp_id = '7812'
ORDER BY site_date DESC
LIMIT 10
Results: (95524 total, Query took 1.7469 sec)
Example: (7811 being a fast ID here)
SELECT site_domain
FROM sites
WHERE site_isp_id = '7811'
ORDER BY site_date DESC
LIMIT 10
Results: (97599 total, Query took 0.0015 sec)
正如你所看到的,由于使用某些ID的一些奇怪的原因,它变得非常慢,而且在我看来它并没有正确使用索引。我试图删除并重新添加site_isp_id
和site_date
索引,但这并没有解决任何问题。另外,如果我不是site_date
而是site_id
而是site_date
,那么它总是很快,所以{{1}}似乎是问题所在。
答案 0 :(得分:1)
在两列site_isp_id
和site_date
,按此顺序添加新索引应该会有所帮助。