sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor kan et indeks gøre en forespørgsel virkelig langsom?

Fordi du stadig skal læse alle data fra både indeks + datafil. Da du ikke bruger nogen where betingelse - du vil altid have forespørgselsplanen, der tilgår alle data, række for række, og du kan ikke gøre noget ved dette.

Hvis ydeevne er vigtig for denne forespørgsel, og den udføres ofte - vil jeg foreslå at cache resultaterne i en midlertidig tabel og opdatere den hver time (dagligt osv.).

Hvorfor det bliver langsommere:Fordi i indeks er data allerede sorteret, og når mysql beregner omkostningerne ved forespørgselsudførelsen, mener det, at det vil være bedre at bruge allerede sorterede data, så gruppere dem og derefter beregne aggregater. Men det er det ikke i dette tilfælde.



  1. Databasedesign:til EAV eller ej til EAV?

  2. [OPDATERET 2020-01-23] Microsoft Office 365 Build 1912 bryder ODBC-linkede tabellers identitet

  3. PHP array mysql hente hver post

  4. Hvordan konfigureres DbContext til at arbejde med Oracle ODP.Net og EF CodeFirst?