sql >> Database >  >> RDS >> Mysql

IN-clausule gebruikt geen index

Ik ga uit de bol en zeg dat het komt omdat je de MyISAM-engine gebruikt.

Het werkt prima met INNODB zoals te zien is in dit Antwoord van mij.

Ik zal proberen om minstens 1 eervolle referentie over de kwestie op te schrikken.

Hier, Het bereik Join Type , duidelijk een INNODB-focus omdat het de standaardengine is. En wanneer niet expliciet vermeld in de handleiding in een documentatiehiërarchie, wordt dit verondersteld.

Let op, er is niets aangrenzends aan de id's in mijn voorbeeldlink. Dit betekent:focus niet te veel op type=range in de EXPLAIN-uitvoer. De snelheid komt tot stand via de Optimizer (de CBO).

De cardinality in mijn voorbeeld is erg hoog (4,3 miljoen). Het aantal doel-ID's is relatief laag (1000). De index wordt gebruikt.

Uw situatie kan het tegenovergestelde zijn:uw kardinaliteit kan ongelooflijk laag zijn, zoals 3, en de optimizer besluit het gebruik van de index te staken.

Om uw index cardinality te controleren , zie de handleidingpagina SHOW INDEX-syntaxis .

Een simpele oproep zoals:

show index from ratings;

+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table   | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| ratings |          0 | PRIMARY  |            1 | id          | A         |     4313544 |     NULL | NULL   |      | BTREE      |         |               |
+---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+


  1. Vergelijkbare nummerpatronen zoeken in de tabel

  2. Door Oracle ondersteunde versiesmatrix

  3. Heroku pg:pull kan schema niet invullen

  4. Eenvoudig Microsoft Access-gegevens exporteren naar Excel