我有一张表格可以保存我的付款记录。它有订阅者ID字段...所以当我在没有索引的情况下查询这个字段时,它返回4个值,如此...
select count(id) from `mydb`.`sale_transaction` where subscriber_guid='4d03a32c-3dca-472b-a1db-0dfb0f66e64d';
+-----------+
| count(id) |
+-----------+
| 4 |
+-----------+
1 row in set (0.31 sec)
所以我想更快地通过这个字段获取数据,我添加了一个像这样的索引......
alter table sale_transaction add index subscriber_guid_index(subscriber_guid);
Query OK, 0 rows affected (1.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
然后再次查询...
select count(id) from `mydb`.`sale_transaction` where subscriber_guid='4d03a32c-3dca-472b-a1db-0dfb0f66e64d';
+-----------+
| count(id) |
+-----------+
| 0 |
+-----------+
1 row in set (0.00 sec)
如果我删除索引,它会再次起作用......
alter table sale_transaction drop index subscriber_guid_index;
Query OK, 0 rows affected (0.06 sec)
Records: 0 Duplicates: 0 Warnings: 0
select count(id) from `mydb`.`sale_transaction` where subscriber_guid='4d03a32c-3dca-472b-a1db-0dfb0f66e64d';
+-----------+
| count(id) |
+-----------+
| 4 |
+-----------+
1 row in set (0.29 sec)
以前没见过这样的东西,我的错是什么?
答案 0 :(得分:1)
问题消失了
OPTIMIZE TABLE sale_transaction;
现在我可以根据subscriber_guid进行查询。
答案 1 :(得分:0)
我认为问题是因为:
ft_min_word_len变量设置不准确。
参见:
http://dev.mysql.com/doc/refman/5.1/en/server-system-variables.html#sysvar_ft_min_word_len