Ini adalah projek pertama saya jadi saya minta maaf kerana saya mempunyai banyak soalan.
Saya cuba mencipta indeks untuk mencari jadual Cat di atas.
Namun, saya tidak tahu bagaimana untuk menerapkannya kerana terdapat beberapa kes untuk klausa di mana.
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;
Jika boleh, bolehkah saya membuat indeks berasingan untuk umur, nama dan kelahiran? Jika tidak, adakah saya perlu mencipta (umur), (umur, nama), (umur, kelahiran), (umur, nama, kelahiran)... untuk setiap kes?
Walaupun selepas membaca buku, saya tidak pasti, jadi saya meninggalkan anda dengan soalan. Harap anda tidak berasa buruk tentang perkara ini.
Saya menggunakan mysql v8.0 innoDB.
Terima kasih!
Mungkinakan mendapat bantuan
Tetapi sila ambil perhatian: jika
birth
的类型为DATETIME
, anda kehilangan sebahagian besar 31/12.Tiada pengindeksan akan membantu kerana terkemuka wildcard.
Reka bentuk seni binanya sangat teruk. Bayangkan apa yang berlaku apabila kucing mempunyai hari lahir. Anda mesti mengemas kini lajur ini. Sebaliknya, gunakan
birth
和CURDATE()
untuk melakukan aritmetik tarikh.Tetapi jika anda menyimpan lajur
age
, maka ini mungkin membantu:Saya memperkenalkan pertanyaan
saya untuk mendapatkan maklumat tentang cara membuatcat.birth
dalam soalan lain hari ini; Sila lihatcat.birth
查询;看见。请参阅我的 Index Cookbook 了解有关如何为给定的SELECT
构建合适的索引。它显示了WHERE ... AND ...
的哪些情况可以使用“复合”(多列)INDEX
Buku Masakan IndeksWHERE ... AND ...
boleh digunakan untuk kelebihan yang baik menggunakan "komposit" (berbilang lajur)