Mysql
我可以在 GROUP BY 子句中使用唯一索引而不是 mysql 中的列嗎
我有一個帶有以下列的表shift_wise_traffic 。
toll date shift car truck bus 1 2016-09-01 1 10 20 30 1 2016-09-01 2 15 25 35 1 2016-09-01 3 20 30 40 2 2016-09-01 1 5 10 15 2 2016-09-01 2 20 25 30 2 2016-09-01 3 35 40 50 1 2016-09-02 1 10 20 30 1 2016-09-02 2 10 20 30 1 2016-09-02 3 10 20 30 2 2016-09-02 1 10 20 30 2 2016-09-02 2 10 20 30 2 2016-09-02 3 10 20 30
現在我想按toll和date生成****shift_wise_traffic表組 的輸出。我創建了一個名為shift_unique_index的唯一索引,它有兩列toll和date。
所以不要寫下面的查詢,
SELECT toll, date, SUM(car), SUM(truck), SUM(bus) FROM shift_wise_traffic GROUP BY toll, date;
我可以使用shift_unique_index使用此查詢嗎?
SELECT toll, date, SUM(car), SUM(truck), SUM(bus) FROM shift_wise_traffic GROUP BY shift_unique_index;
SELECT toll, date, SUM(car), SUM(truck), SUM(bus) FROM shift_wise_traffic GROUP BY toll, date;
GROUP BY
必須有一個列列表*,*而不是索引名稱。- An
INDEX
是一種優化,而不是要求。- An對於這樣的查詢
INDEX
可能很有用。(沒有索引可能對這個特定的查詢有用。)- 可能此查詢將簡單地掃描整個表,按收費+日期排序,匯總值,然後提供輸出。(或者它可以基於toll+date建構一個記憶體中的雜湊值進行求和。)
UNIQUE
與INDEX
- 在這種情況下沒有區別。UNIQUE
=INDEX
+ 一個約束。對於INSERT
,UNIQUE
防止重複。感覺就像你
PRIMARY KEY
的(date, shift, toll)
順序一樣。是嗎?如果是這樣,那麼將順序更改為PRIMARY KEY(toll, date, shift)
可能會使您的GROUP BY
執行速度更快一些。(但它可能會減慢其他操作。)