MySQL5.1.66には次のDB構造があります。
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)
DBには約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秒かかります。これは何が原因ですか?