這是我的第一個專案,所以很抱歉我有這么多問題。
我正在嘗試索引以搜索上面的 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;
如果是這樣,我可以分別創建關于年齡、姓名和出生的索引嗎?如果沒有,我是否必須為每個案例創建 (age)、(age,name)、(age,birth)、(age,name,birth)....?
即使看完書,我也不確定,所以我留下一個問題。我希望你不要為此感到難過。
我使用 mysql v8.0 innoDB。
謝謝!
uj5u.com熱心網友回復:
WHERE birth between '2000-01-01' and '2009-12-31'
可能會得到幫助
INDEX(birth)
但是請注意:如果birth是 type DATETIME,則您已經遺漏了 12/31 的大部分內容。
and NAME like '%blue%';
由于前導通配符,沒有索引會有所幫助。
AND AGE = 5
是糟糕的架構設計。想想當貓過生日時會發生什么。您必須更新該列。birth而是用and做一些日期算術CURDATE()。
但是,如果您確實保留了一個age專欄,那么這可能會有所幫助:
INDEX(age)
我cat.birth今天在另一個問題中討論了查詢;看見。并查看我的Index Cookbook,了解如何為給定的SELECT. 它顯示了哪些情況下WHERE ... AND ...可以使用“復合”(多列)INDEX來獲得很好的優勢。您的任何示例都不能使用復合索引。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/476516.html
