sql >> Database >  >> RDS >> Mysql

Zullen indexen worden gebruikt als u een subset van de kolommen van de index opvraagt?

MySQL-documentatie legt goed uit hoe indexen met meerdere kolommen werken hier .

Over het algemeen kan de index worden gebruikt voor een where clausule wanneer een aantal kolommen op de meest linkse kant van de index hebben gelijkheidsvoorwaarden. Je where clausules gebruiken de volgende kolommen:

  • c1, c2
  • c1, c2, c3, c4
  • c1, c2
  • c1, c2, c5

Elke index die begint met kolommen c1 en c2 zou normaal gesproken worden gebruikt voor deze vragen. MySQL kan andere voorwaarden stellen aan het gebruik van de index, zoals selectiviteit. Dat wil zeggen, als c1 en c2 constante waarden hebben (bijvoorbeeld) dan zal het gebruik van een index de zoekopdracht niet ten goede komen.

Om al deze combinaties te optimaliseren, kunt u twee indexen maken:c1, c2, c3, c4 en c2, c1, c5 . De reden voor het omwisselen van c1 en c2 in de tweede index is zodat je zou query's afhandelen waarbij de voorwaarde op c2 staat maar niet c1 , evenals het omgekeerde.



  1. Waar kan ik het bestand my.ini voor de Windows mysql-server vinden?

  2. SQL-tabel met lijstitem versus SQL-tabel met een rij voor elk item

  3. JSON Zoeken in laravel welsprekend

  4. Maak een Date-object in PHP voor datums vóór 1970 in een bepaald formaat