sql >> Database >  >> RDS >> Mysql

MySQL-query's optimaliseren met IN-operator

Index op categoryId zal in dit geval niet helpen, IN (...)-query's zullen hoe dan ook een sequentiescan produceren in plaats van index-lookup.

Ik zou overwegen om eerst het systeem opnieuw te ontwerpen om de selectie van meerdere categorieën te verwijderen en, als het niet gepast is, de queryresultaten in de cache op te slaan.

U kunt bijvoorbeeld een hulptabel items_category_groups(hash, item_id) maken en nadat de klant op meerdere categorieën heeft gezocht, hun gecombineerde id's hashen en deze tabel opzoeken. Indien niet gevonden, maak dan een dure zoekopdracht en vul deze tabel in. Maak, indien gevonden, een goedkope zoekopdracht om deze tabellen samen te voegen. Andere caching-tools zoals memcached zullen ook werken.




  1. Verklaring van vertraging of wachten op

  2. Galera-clusterbronnen

  3. Hoe voeg ik een lege rij in, maar laat ik de autonummering correct bijwerken?

  4. SQL Dynamic DatePart bij gebruik van DateDiff