假設您有一個包含大約100萬行的id,a,b,c,d,e,f,g
的表格。然後可以用多種組合的方式進行多個WHERE ...AND...AND...etc
條件的查詢。 這就是例如a AND b AND e
或a AND f AND g
或e AND f AND g
。多個或單個複合索引
因此爲了解釋所有組合,您將不得不創建多個複合索引,但如果a,b,c,d,e,f,g
的範圍是[1,10],那麼不會有零。
難道一個只是讓每個起始變單一的化合物,從而a,b,c,d,e,f,g
和b,a,c,d,e,f,g
等。而在查詢時間做這樣的事情
#b and e have not been chosen
SELECT * FROM WHERE a=3 AND b!=0 AND c=4 AND d=5 AND e!=0 AND f=1 AND g=9
#I think you get the logic
難道這樣的程序讓MySQL的仍然使用複合索引還是我真的需要創建複合索引的所有可能的組合。
最終結果是索引的數目減少到7,而不是左組合候選條件的數目是方式高於7
這種問題有時是缺乏規範化的症狀 – Strawberry
這是模擬mysql中的物化視圖,因此列數很大。 – delmalki
草莓確實有一個標準化點,只要你的a-g列都是相同的上下文。但是,如果你的數據是每個a-g列都有它自己的標準化值 - 比如我在一個政府合同表中工作。根表有超過20個單獨的查找參考表的鏈接,每個參考表都標準化爲ID。如果您可以擴展更多的通用a-g上下文,我們可以爲您的情況提供更好的說明和輸入。 – DRapp