我有一個平臺,約10mio行,每行有15列。 索引設置爲column_1,column_2,column_3和my_time。MySQL計數(DISTINCT)非常慢 - 對子查詢更好?
SELECT Date(my_time) my_time,
count(DISTINCT column_1) c_c1,
count(DISTINCT column_2) c_c2
FROM `table_name`
WHERE `column_3` in (10,11,100,50,213,756)
AND Date(my_time) > '2016-09-01'
AND Date(my_time) < '2016-09-30'
GROUP BY Date(my_time)
ORDER BY Date(my_time) ASC
結果花了大約20-30秒。
有誰知道,如何改進這個查詢,也許有子查詢? 在子查詢的情況下,你能告訴我一個示例查詢,如何提高性能?
謝謝!
做一個[EXPLAIN](https://dev.mysql.com/doc/refman/5.7/en/explain.html)併發布在你的答案。 –
嘗試更改爲my_time BETWEEN '2016年9月1日00:00:00' 和 '23:59:59 2016年9月30日' – Don
ID:1 SELECT_TYPE:SIMPLE 表:表名 類型:ALL possible_keys: my_time,column_3 key:NULL key_len:NULL ref:NULL rows:.... Extra:Using where;使用filesort – user1891898