sql >> Database teknologi >  >> RDS >> Mysql

Bedste type indeksering, når der er LIKE-klausul

Ja, det du har her er en databasedræber

Et B-træindeks kan bruges til kolonnesammenligninger i udtryk, der bruger operatorerne =,>,>=, <, <=eller BETWEEN. Indekset kan også bruges til LIKE sammenligninger, hvis argumentet til LIKE er en konstant streng, der ikke starter med et jokertegn.

Kilde:http://dev.mysql.com /doc/refman/5.7/da/index-btree-hash.html

Så det betyder, at din LIKE-forespørgsel ikke kan bruge indekset, og så har du to likes forbundet med en OR. Hvis det ikke er nok, har du også smidt en NOT IN-sammenligning ind.

Men heldigvis er det andet LIKE-udtryk ikke så slemt, det starter ikke med et jokertegn. Så dit bedste håb er at oprette et sammensat indeks på usage_guidance, name

Hvis du kunne sende din SHOW CREATE TABLE og et par linjer med eksempeldata + det forventede output, får vi måske en idé om, om der er en måde at omskrive denne forespørgsel på.




  1. Python MySQL-stik - ulæst resultat fundet ved brug af fetchone

  2. ROWID (oracle) - nogen brug for det?

  3. Hvordan returnerer jeg tilfældige tal som en kolonne i SQL Server 2005?

  4. Hvordan vælger man kun de første rækker for hver unik værdi i en kolonne?