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

Hvorfor bruger denne forespørgsel where i stedet for indeks?

Outputtet af EXPLAIN kan nogle gange være vildledende.

For eksempel filesort har intet at gøre med filer, using where betyder ikke, at du bruger en WHERE klausul og using index kan dukke op på tabellerne uden et enkelt indeks defineret.

Using where betyder bare, at der er en begrænsningsklausul på bordet (WHERE eller ON ), og ikke alle poster vil blive returneret. Bemærk, at LIMIT tæller ikke som en begrænsningsklausul (selvom det kan være det).

Using index betyder, at alle oplysninger returneres fra indekset, uden at søge posterne i tabellen. Dette er kun muligt, hvis alle felter, der kræves af forespørgslen, er dækket af indekset.

Da du vælger * , det er umuligt. Andre felter end category_id , board_id , display og order er ikke omfattet af indekset og bør slås op.



  1. SqlPlus-forespørgselsproblem (pakkespecifikationer og krop)

  2. flette opdatering oracle ude af stand til at få et stabilt sæt rækker

  3. Sammenkæd flere resultatrækker i én kolonne til én, grupper efter en anden kolonne

  4. Gruppér efter dataintervaller