當前位置:成語大全網 - 新華字典 - mysql count 帶上 where 查詢速度怎麽優化

mysql count 帶上 where 查詢速度怎麽優化

count(*)在數據多的時候非常慢。

優化方法

這要從InnoDB的索引說起, InnoDB的索引是B+Tree。

對主鍵索引來說:它只有在葉子節點上存儲數據,它的key是主鍵,並且value為整條數據。

對輔助索引來說:key為建索引的列,value為主鍵。

這給我們兩個信息:

1. 根據主鍵會查到整條數據

2. 根據輔助索引只能查到主鍵,然後必須通過主鍵再查到剩余信息。

所以如果要優化count(*)操作的話,我們需要找壹個短小的列,為它建立輔助索引。

在我的例子中就是status,雖然它的”severelity”幾乎為0.

先建立索引:ALTER TABLE test1 ADD INDEX (status);

然後查詢,查詢速度提升近13倍。

參考:網頁鏈接

如果索引是str這壹列,結果又會是怎麽樣呢?

先建立索引: alter table test1 add index (str) 也很快,但是比起status這列還是有著1.5倍左右的差距。