sql >> Database >  >> RDS >> Mysql

Waarom gebruikt deze query waar in plaats van index?

De uitvoer van EXPLAIN kan soms misleidend zijn.

Bijvoorbeeld filesort heeft niets te maken met bestanden, using where betekent niet dat je een WHERE . gebruikt clausule, en using index kan op de tabellen verschijnen zonder dat er een enkele index is gedefinieerd.

Using where betekent alleen dat er een beperkende clausule op de tafel staat (WHERE of ON ), en niet alle records worden geretourneerd. Merk op dat LIMIT telt niet als een beperkende clausule (hoewel het wel kan).

Using index betekent dat alle informatie uit de index wordt geretourneerd, zonder de records in de tabel te zoeken. Dit is alleen mogelijk als alle velden die vereist zijn voor de zoekopdracht door de index worden gedekt.

Aangezien u * selecteert, , dit is onmogelijk. Andere velden dan category_id , board_id , display en order vallen niet onder de index en moeten worden opgezocht.



  1. mysql utf8mb4_unicode_ci veroorzaakt unieke sleutelbotsing

  2. Werk een tabel bij met count() uit een andere tabel

  3. Fix “SQL Server blokkeerde toegang tot VERKLARING ‘OpenRowset/OpenDatasource’ van component ‘Ad Hoc Distributed Queries’

  4. Moet een databaseverbinding altijd open blijven of alleen worden geopend als dat nodig is?