小编jci*_*sio的帖子

不带引号的 MySQL 文本字段

我刚刚遇到了一些奇怪的事情。base_id 是一个 varchar(255)。当我执行不带引号的 SELECT 时,它会扫描整个表:

mysql> EXPLAIN SELECT sid FROM rf_fo.scald_atoms WHERE base_id = 493457;
+----+-------------+-------------+-------+---------------+---------+---------+------+-------+--------------------------+
| id | select_type | table       | type  | possible_keys | key     | key_len | ref  | rows  | Extra                    |
+----+-------------+-------------+-------+---------------+---------+---------+------+-------+--------------------------+
|  1 | SIMPLE      | scald_atoms | index | base_id       | base_id | 767     | NULL | 84404 | Using where; Using index |
+----+-------------+-------------+-------+---------------+---------+---------+------+-------+--------------------------+
1 row in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

有报价就可以了。

mysql> EXPLAIN SELECT sid FROM rf_fo.scald_atoms WHERE base_id = '493457'; …
Run Code Online (Sandbox Code Playgroud)

mysql index varchar

3
推荐指数
1
解决办法
1679
查看次数

标签 统计

index ×1

mysql ×1

varchar ×1