Mysql
 sql >> база данни >  >> RDS >> Mysql

Защо MySQL не използва нито един от тези възможни ключове?

Друг проблем, с който може да се сблъскате, е несъответствие на типа данни. Например, ако вашата колона е низов тип данни (CHAR, например) и вашата заявка не цитира число, тогава MySQL няма да използва индекса.

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

Източник:Току-що се борих със същия проблем днес и научих по трудния начин на MySQL 5.1. :)

Редактиране:Допълнителна информация за потвърждение на това:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте strftime в SQLite заявка в MySQL

  2. Намерете потребител в Laravel по потребителско име

  3. Изберете група редове с максимална стойност на колона от друга колона

  4. Прехвърляне от VARCHAR към INT - MySQL

  5. Преглед на репликацията от клъстер към клъстер