Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao MySQL không sử dụng bất kỳ khóa nào trong số này?

Một vấn đề khác mà bạn có thể gặp phải là loại dữ liệu không khớp. Ví dụ:nếu cột của bạn là kiểu dữ liệu chuỗi (CHAR, ví dụ:) và truy vấn của bạn không trích dẫn một số, thì MySQL sẽ không sử dụng chỉ mục.

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

Nguồn:Vừa mới chiến đấu với vấn đề tương tự ngày hôm nay và học cách khó trên MySQL 5.1. :)

Chỉnh sửa:Thông tin bổ sung để xác minh điều này:

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. Cập nhật một hàng, nhưng chèn nếu hàng không tồn tại trong bộ mã

  2. Làm cách nào để thay đổi tiền tố trong tất cả các bảng trong MySQL DB của tôi?

  3. Chèn hàng mới với dữ liệu được tính toán từ các hàng khác

  4. Tạo một biểu mẫu tìm kiếm trong PHP để tìm kiếm cơ sở dữ liệu?

  5. Truy vấn để lấy các bản ghi cha với bản ghi con, theo sau là các bản ghi cha-con tiếp theo trong mysql