sql >> Databáze >  >> RDS >> Mysql

Proč tento dotaz používá kde místo indexu?

Výstup EXPLAIN může být někdy zavádějící.

Například filesort nemá nic společného se soubory, using where neznamená, že používáte WHERE klauzule a using index se může zobrazit v tabulkách bez definovaného jediného indexu.

Using where jen to znamená, že v tabulce je nějaká omezující klauzule (WHERE nebo ON ), a ne všechny záznamy budou vráceny. Všimněte si, že LIMIT se nepočítá jako omezující klauzule (ačkoli může být).

Using index znamená, že všechny informace jsou vráceny z indexu bez hledání záznamů v tabulce. To je možné pouze v případě, že všechna pole požadovaná dotazem jsou pokryta indexem.

Protože jste vybrali * , to je nemožné. Jiná pole než category_id , board_id , display a order nejsou zahrnuty do indexu a je třeba je vyhledat.



  1. Jak opravit konflikt řazení v dotazu SQL Server?

  2. SQL Server ZOBRAZIT TABULKY Ekvivalent

  3. datetimeoffset mapování hibernace

  4. Graf JFreechart s časem z databáze SQL