2016-07-07 48 views
0

請看看這個:我是否需要在SUM(col)使用的列上創建索引?

SELECT SUM(col1) FROM mytable WHERE col2 = :val2 

什麼指數(S)我需要爲上述查詢?我的意思是col1需要一個索引,因爲它用在SUM()函數中?

另外作爲一個說明,COUNT()功能呢?

+0

'col1' **不需要索引。數據庫中的索引與書中的索引完全相同(現實生活中的索引)。索引是一種保存在內存中的數據結構(通常是),它告訴數據庫硬盤驅動器上的一條信息。這就是爲什麼你經常索引出現在WHERE條件中的列。但是,爲避免在磁盤上查找,可以像Gordon Linoff建議的那樣創建複合索引。這樣,MySQL查找所有滿足'col2 =:val'的記錄,然後避免在磁盤上查找,因爲'col1'是索引的一部分,所以它會讀取它。 –

+0

@ N.B。謝謝 –

回答

1

此查詢的最佳索引是mytable(col2, col1)。它是查詢的覆蓋索引。

查詢中列的邏輯以WHEREON子句開始。關於構建變量條件的索引,MySQL有很好的documentation

+0

好的,只是哪個索引最適合[this](https://gist.github.com/anonymous/0b2b48e8f6ea7dd2a6e7e53e521f0b29)? –

相關問題