我的 MySQL 5.1.66 上有以下数据库结构:
ID int(11) PRIMARY
CID varchar(255) INDEX
V1 varchar(1500)
DATE datetime
IP_ADDR varchar(255)
V2 varchar(1000)
USER_DELAY int(11)
M_ID int(22)
REFERER varchar(255)
BRAND varchar(255)
LANG varchar(255)
USER varchar(255)
我在数据库中有近 9,000,000 行,这是我的一些更重要的 my.cnf 属性:
innodb_buffer_pool_size = 256M
innodb_log_buffer_size = 16M
key_buffer_size = 128M
bulk_insert_buffer_size = 128M
max_heap_table_size = 128M
sort_buffer_size = 8M
tmp_table_size = 128M
问题是,当运行一个简单的查询时,例如:
SELECT * FROM table WHERE CID = 123456
获得响应需要 60 多秒(CID 是索引字段,查询只有 10 个结果)。
上述查询的 EXPLAIN 输出:
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
| 1 | SIMPLE | table | ALL | CID | NULL | NULL | NULL | 9193357 | Using where |
+----+-------------+-------+------+---------------+------+---------+------+---------+-------------+
编辑:我刚刚注意到一些事情,当我将值放在引号下时,我会在 0.13 秒内得到结果,但是如果我在没有引号的情况下运行查询需要 60 秒,这是什么原因造成的?