Dies ist mein erstes Projekt, daher tut es mir leid, dass ich viele Fragen habe.
Ich versuche, einen Index zu erstellen, um die obige Cat-Tabelle zu durchsuchen.
Allerdings weiß ich nicht, wie ich es anwenden soll, da es mehrere Fälle für die Where-Klausel gibt.
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;
Kann ich nach Möglichkeit separate Verzeichnisse für Alter, Name und Geburt erstellen? Wenn nicht, muss ich für jeden Fall (Alter), (Alter, Name), (Alter, Geburt), (Alter, Name, Geburt) ... erstellen?
Selbst nachdem ich das Buch gelesen habe, bin ich mir nicht sicher, also stelle ich Ihnen eine Frage. Ich hoffe, du hast kein schlechtes Gewissen deswegen.
Ich verwende MySQL v8.0 innoDB.
Danke!
可能会得到帮助
但是请注意:如果
birth
的类型为DATETIME
,则您遗漏了 12/31 的大部分内容。由于前导通配符,任何索引都无济于事。
架构设计很糟糕。想象一下当猫过生日时会发生什么。您必须更新该列。相反,使用
birth
和CURDATE()
进行一些日期算术。但是如果您确实保留了
age
列,那么这可能会有所帮助:我今天在另一个问题中介绍了
cat.birth
查询;看见。请参阅我的 Index Cookbook 了解有关如何为给定的SELECT
构建合适的索引。它显示了WHERE ... AND ...
的哪些情况可以使用“复合”(多列)INDEX
来获得良好的优势。您的示例都不能使用复合索引。