sql >> Databasteknik >  >> RDS >> Mysql

Varför använder den här frågan where istället för index?

Utdata från EXPLAIN kan ibland vara vilseledande.

Till exempel filesort har inget med filer att göra, using where betyder inte att du använder en WHERE sats och using index kan dyka upp i tabellerna utan ett enda index definierat.

Using where betyder bara att det finns en begränsningsklausul i tabellen (WHERE eller ON ), och inte alla poster kommer att returneras. Observera att LIMIT räknas inte som en begränsningsklausul (även om det kan vara det).

Using index innebär att all information returneras från indexet, utan att söka posterna i tabellen. Detta är endast möjligt om alla fält som krävs av frågan täcks av indexet.

Eftersom du väljer * , detta är omöjligt. Andra fält än category_id , board_id , display och order omfattas inte av indexet och bör slås upp.



  1. finns det en längdbegränsning till group_concat eller någon annan anledning till att det inte skulle fungera på ett textfält

  2. Använd bounding box från PostGIS i vanilla Postgres-frågan

  3. SQLiteConstraintException-fel visas efter start av varje aktivitet

  4. Databasdesign - Push Model, eller Fan-out-on-write