我主要是一個Actionscript開發人員,決不是SQL專家,但有時我不得不開發簡單的服務器端的東西。所以,我想我會問更多有經驗的人關於標題中的問題。使用基數較低的索引是否有意義?
我的理解是,通過在一個只包含幾個不同值的列中設置索引,你並不會獲得太多收益。我有一個列保存一個布爾值(實際上它是一個小的int,但我用它作爲標誌),並且這個列用於大多數查詢的WHERE子句中。在理論上的「平均」情況下,一半的記錄值將爲1,另一半爲0.因此,在這種情況下,數據庫引擎可以避免全表掃描,但是無論如何都必須讀取很多行(總排/ 2)。
那麼,我應該讓這個列成爲索引嗎?
爲了記錄,我使用的是Mysql 5,但是我更關心爲什麼它沒有意義地索引一個列,我知道這將有一個低基數的一般理由。
在此先感謝。
感謝您的回答。在這種情況下,我並未在該列上排序。它只是將記錄標記爲啓用/禁用。基本上,我將它用於軟刪除。這就是爲什麼我必須在大多數查詢的WHERE子句中使用它。 – 2010-01-21 21:58:10