Rumah > Soal Jawab > teks badan
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!
P粉2774647432024-03-31 15:26:09
WHERE birth between '2000-01-01' and '2009-12-31'
Mungkinakan mendapat bantuan
INDEX(birth)
Tetapi sila ambil perhatian: jika birth
的类型为 DATETIME
, anda kehilangan sebahagian besar 31/12.
and NAME like '%blue%';
Tiada pengindeksan akan membantu kerana terkemuka wildcard.
AND AGE = 5
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:
INDEX(age)
Saya memperkenalkan pertanyaan cat.birth
dalam soalan lain hari ini; Sila lihat cat.birth
查询;看见。请参阅我的 Index Cookbook 了解有关如何为给定的 SELECT
构建合适的索引。它显示了 WHERE ... AND ...
的哪些情况可以使用“复合”(多列)INDEX
Buku Masakan Indeks
WHERE ... AND ...
boleh digunakan untuk kelebihan yang baik menggunakan "komposit" (berbilang lajur)