正確的索引我有如下表:我MySQL查詢
CREATE TABLE `sal_forwarding` (
`sid` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`f_shop` INT(11) NOT NULL,
`f_offer` INT(11) DEFAULT NULL,
.
.
.
PRIMARY KEY (`sid`),
KEY `forwardTime` (`forwardTime`,`f_shop`),
KEY `forwardTime_2` (`forwardTime`),
KEY `f_shop` (`f_shop`)
) ENGINE=INNODB AUTO_INCREMENT=10457068 DEFAULT CHARSET=latin1
這個表已經超過500萬行。
我已經設置了索引,如上所見,但在我的查詢中沒有使用索引,我不明白爲什麼。有人看到我的問題嗎?
說明:
EXPLAIN SELECT
f_shop
, COUNT(sid)
, SUM(IF(toolbarUser=1,1,0))
FROM sal_forwarding
WHERE DATE(forwardTime) = "2011-09-01"
GROUP BY f_shop
結果:
+----+-------------+----------------+-------+---------------+--------+---------+--------+--------+-------------+
| ID | SELECT_TYPE | TABLE | TYPE | POSSIBLE_KEYS | KEY | KEY_LEN | REF | ROWS | EXTRA |
+----+-------------+----------------+-------+---------------+--------+---------+--------+--------+-------------+
| | | | | | | | | | |
| 1 | SIMPLE | sal_forwarding | index | (NULL) | f_shop | 4 | (NULL) | 232449 | Using where |
+----+-------------+----------------+-------+---------------+--------+---------+--------+--------+-------------+
當我將查詢更改爲:EXPLAIN SELECT f_shop,COUNT(sid),SUM(IF(toolbarUser = 1,1,0))FROM sal_forwarding GROUP BY f_shop。沒有使用索引。我刪除了DATE()函數,並且沒有使用索引。 :( – user954740
@dnagirl,你有正確的答案,你爲什麼要刪除它? – Johan
作爲一個新手,你可能想開始接受你的問題的答案找到解決方案。這樣,它給了那些幫助和其他人將在未來繼續提供幫助...尋找答案左側的複選標記並檢查解決方案是否有效,還可以幫助其他人搜索舊問題,以便在早已提前解決問題時提供解決方案解決方案: – DRapp