Mysql
 sql >> Base de données >  >> RDS >> Mysql

Pourquoi MySQL n'utilise-t-il aucune de ces clés possibles ?

Un autre problème que vous pouvez rencontrer est une incompatibilité de type de données. Par exemple, si votre colonne est un type de données chaîne (CHAR, par exemple) et que votre requête ne cite pas de nombre, alors MySQL n'utilisera pas l'index.

SELECT * FROM tbl WHERE col = 12345; # No index
SELECT * FROM tbl WHERE col = '12345'; # Index

Source :Je viens de combattre ce même problème aujourd'hui et j'ai appris à la dure sur MySQL 5.1. :)

Edit :Informations supplémentaires pour vérifier ceci :

mysql> desc das_table \G
*************************** 1. row ***************************
  Field: das_column
   Type: varchar(32)
   Null: NO
    Key: PRI
Default: 
  Extra: 
*************************** 2. row ***************************
[SNIP!]

mysql> explain select * from das_table where das_column = 189017 \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: das_column
         type: ALL
possible_keys: PRIMARY
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 874282
        Extra: Using where
1 row in set (0.00 sec)

mysql> explain select * from das_table where das_column = '189017' \G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: das_column
         type: const
possible_keys: PRIMARY
          key: PRIMARY
      key_len: 34
          ref: const
         rows: 1
        Extra: 
1 row in set (0.00 sec)