sql >> Databasteknik >  >> RDS >> Mysql

Optimera MySQL-frågor med IN-operator

Index på categoryId hjälper inte i det här fallet, IN (...)-frågor kommer att producera sekvenssökning istället för indexuppslag ändå.

Jag skulle överväga att först designa om systemet för att bli av med val av flera kategorier och, om det inte är lämpligt, cacha frågeresultat.

Till exempel kan du skapa en hjälptabell items_category_groups(hash, item_id) och efter klientfråga på flera kategorier hasha deras kombinerade id och slå upp den här tabellen. Om den inte hittas, gör en dyr fråga och fyll den här tabellen. Om hittas, gör en billig fråga genom att ansluta till dessa tabeller. Andra cachningsverktyg som memcached fungerar också.




  1. MySQL-förberedda uttalanden

  2. inom lat,lng gränser där fråga

  3. PostgreSQL, kan inte uppdatera rad (med säkerhet på radnivå)

  4. Sök efter ett värde i kolumnvärdet som lagrar kommaseparerade värden