奇怪的Mysql innoDB索引问题

时间:2013-11-13 12:20:24

标签: mysql innodb indexing

我在使用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_dateINT (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_idsite_date索引,但这并没有解决任何问题。另外,如果我不是site_date而是site_id而是site_date,那么它总是很快,所以{{1}}似乎是问题所在。

1 个答案:

答案 0 :(得分:1)

在两列site_isp_idsite_date按此顺序添加新索引应该会有所帮助。