sql >> Databasteknik >  >> RDS >> Mysql

Bästa typen av indexering när det finns LIKE-klausul

Japp, det du har här är en databasmördare

Ett B-trädindex kan användas för kolumnjämförelser i uttryck som använder operatorerna =,>,>=, <, <=eller BETWEEN. Indexet kan också användas för LIKE-jämförelser om argumentet till LIKE är en konstant sträng som inte börjar med ett jokertecken.

Källa:http://dev.mysql.com /doc/refman/5.7/en/index-btree-hash.html

Så det betyder att din LIKE-fråga inte kan använda indexet och då har du två likes kopplade till ett OR. Om det inte räcker så har du slängt in en NOT IN-jämförelse också.

Men lyckligtvis är det andra LIKE-uttrycket inte så illa, det börjar inte med ett jokertecken. Så ditt bästa hopp är att skapa ett sammansatt index på usage_guidance, name

Om du kunde lägga upp din SHOW CREATE TABLE och några rader med exempeldata + den förväntade utdata, kanske vi får en idé om det finns ett sätt att skriva om den här frågan.




  1. En översikt över Amazon RDS &Aurora-erbjudanden för PostgreSQL

  2. Hur man sammanfogar strängar i SQL

  3. 3 sätt att använda ALLT i SQL Server

  4. Vad är Microsoft Access och vad använder du det till?