sql >> Databasteknik >  >> RDS >> Mysql

mysql select query optimering och hur limit fungerar i mysql

Regelbunden indexering kan inte användas för att förbättra den frågan. MySQL-index är B-träd, vilket betyder att de kan hitta ett prefix för den indexerade kolumnen mycket snabbt. Men eftersom din LIKE frågan har % i början finns det inget unikt prefix att söka efter. Så varje rad måste skannas för att matcha mönstret.

Men MySQL stöder också fulltextsökning. Detta skapar ett index över alla ord i kolumnen, och det kan hitta dessa ord snabbt. Se dokumentationen för detaljer.

Om du använder LIMIT 10 , kommer den att sluta skanna så snart den hittar de första 10 raderna som uppfyller villkoren. Såvida du inte också använder ORDER BY -- sedan måste den hitta alla rader så att den kan sortera dem innan den väljer de första 10.




  1. Den angivna nyckeln var för lång; Max nyckellängd är 767 byte Mysql-fel i Entity Framework 6

  2. Praktisk gräns för SQL-frågans längd (särskilt MySQL)

  3. Få inlägg gjorda idag men minst 20 minuter äldre

  4. Kommer SQLite-prestandan att försämras om databasstorleken är större än 2 gigabyte?