sql >> Database >  >> RDS >> Mysql

Waarom kan een index een zoekopdracht erg traag maken?

Omdat je nog steeds alle gegevens uit zowel index + gegevensbestand moet lezen. Aangezien je geen where . gebruikt voorwaarde - je hebt altijd het queryplan, dat toegang heeft tot alle gegevens, rij voor rij en je kunt hier niets mee.

Als prestaties belangrijk zijn voor deze query en deze vaak wordt uitgevoerd, raad ik aan om de resultaten in een tijdelijke tabel te cachen en deze elk uur (dagelijks, enz.) bij te werken.

Waarom het langzamer wordt:omdat de indexgegevens al zijn gesorteerd en wanneer mysql de kosten van de query-uitvoering berekent, denkt het dat het beter is om reeds gesorteerde gegevens te gebruiken, deze vervolgens te groeperen en vervolgens de aggregaties te berekenen. Maar in dit geval niet.



  1. Hoe converteer ik een legacy left outer join-instructie in Oracle?

  2. Oracle MINUS-operator uitgelegd

  3. Hoe een tabel van de ene server naar de andere bijwerken?

  4. Door de gebruiker gedefinieerde MySQL-variabele in WHERE-component