這是我的第一個項目,所以很抱歉我有很多問題。
我正在嘗試建立索引來搜尋上面的 Cat 表。
但是,我不知道如何應用它,因為 where 子句有多種情況。
SELECT * FROM CAT WHERE birth between '2000-01-01' and '2009-12-31'; SELECT * FROM CAT WHERE birth between '2000-01-01' and '2009-12-31' and NAME like '%blue%'; SELECT * FROM CAT WHERE NAME like '%blue%' AND AGE = 5;
如果可以,我可以分別建立年齡、姓名和出生的索引嗎? 如果沒有,我是否必須為每種情況創建(年齡),(年齡,姓名),(年齡,出生),(年齡,姓名,出生)......?
即使讀完這本書,我也不確定,所以我留下一個問題。希望你不要為此感到難過。
我使用mysql v8.0 innoDB。
謝謝!
可能會得到幫助
但請注意:如果
birth
的類型為DATETIME
,則您遺漏了 12/31 的大部分內容。由於前導通配符,任何索引都無濟於事。
架構設計很糟糕。想像一下當貓過生日時會發生什麼事。您必須更新該列。相反,使用
birth
和CURDATE()
進行一些日期算術。但是如果您確實保留了
age
列,那麼這可能會有所幫助:我今天在另一個問題中介紹了
cat.birth
查詢;看見。請參閱我的 Index Cookbook 以了解有關如何為給定的SELECT
建立合適的索引。它顯示了WHERE ... AND ...
的哪些情況可以使用「複合」(多列)INDEX
來獲得良好的優勢。您的範例都不能使用複合索引。