sql >> Databasteknik >  >> RDS >> Mysql

Varför använder inte MySQL någon av dessa möjliga nycklar?

Ett annat problem du kan stöta på är en datatyp som inte matchar. Om din kolumn till exempel är en strängdatatyp (CHAR, till exempel), och din fråga inte citerar ett nummer, kommer MySQL inte att använda indexet.

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

Källa:Har precis kämpat mot samma problem idag och lärt mig den hårda vägen om MySQL 5.1. :)

Redigera:Ytterligare information för att verifiera detta:

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)


  1. Separera kommaseparerade värden och lagra i tabell i sql-server

  2. Kan PostgreSQL ha en unik begränsning för arrayelement?

  3. Det går inte att släppa en MySQL-tabell på grund av begränsningar för främmande nyckel

  4. MySQL-indexkardinalitet - prestanda kontra lagringseffektivitet