Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego MySQL nie używa żadnego z tych możliwych kluczy?

Innym problemem, który możesz napotkać, jest niezgodność typów danych. Na przykład, jeśli Twoja kolumna jest typem danych typu string (CHAR, na przykład), a zapytanie nie cytuje liczby, to MySQL nie użyje indeksu.

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

Źródło:Właśnie dzisiaj walczyłem z tym samym problemem i na własnej skórze poznałem MySQL 5.1. :)

Edytuj:dodatkowe informacje, aby to zweryfikować:

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. MySql pobiera rekordy lub dane według dziennych, tygodniowych, miesięcznych i rocznych

  2. Oracle Database Link — odpowiednik MySQL?

  3. Jak używać mysqli_query() w PHP?

  4. Rozpakowywanie wywołań bazy danych węzłów

  5. Jak zainstalować pakiet MySQLdb? (ImportError:brak modułu o nazwie setuptools)