2017-08-30 64 views
0

我有一個叫做「notifications通過索引列的順序

dateTime | message | sentStatus | sentDateTime | sensorID | userID 

我已經創建了此表上的索引(dateTime, sensorID)表。

我在某處讀過,在MySQL中,索引工作從左到右。

我查詢數據這樣

SELECT dateTime, message 
WHERE sensorID = 'id' 
    AND sentStatus != 'sent' 
ORDER BY dateTime desc; 

是我的查詢作出任何利用索引?

如果我改變這樣的列順序,性能會不會有影響?

userID | sensorID | dateTime | message | sentStatus | sentDateTime 
+1

更改表列的順序不會影響索引。但是,更改索引所依據的列的順序將會執行:''('dateTime,sensorId)'上的索引不會在查詢'sensorId'時被命中。但那裏的因素太多了;你爲什麼不檢查'EXPLAIN'的查詢結果? – raina77ow

+0

有沒有辦法改善給定表的上述查詢的性能? –

回答

2

正確的指標應該是:

(sensorID, status, dateTime) 

前兩個原因是那裏的條件,最後一個排序的一部分。

檢查MySQL索引的TIPS