我有一个InnoDB,MySQL表,这个查询返回零行:
SELECT id, display FROM ra_table WHERE parent_id=7266 AND display=1;
但是,实际上有17行应该匹配:
SELECT id, display FROM ra_itable1 WHERE parent_id=7266;
ID display
------------------
1748 1
5645 1
...
显示索引(int 1),ID是主键。该表还有其他几个字段,我没有在这个查询中提取。
注意到这个查询不起作用后,我对表进行了碎片整理,然后第一个查询开始正常工作,但只有一段时间。似乎在几天之后,查询再次停止工作,我必须进行碎片整理才能修复它。
我的问题是,为什么碎片表会破坏这个查询?
其他信息:Amazon RDS上的MySQL 5.6.27。
CREATE TABLE `ra_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`parent_id` int(6) NOT NULL,
`display` int(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `parent_id` (`parent_id`),
KEY `display` (`display`),
) ENGINE=InnoDB AUTO_INCREMENT=13302 DEFAULT CHARSET=latin1
ROW_FORMAT=DYNAMIC
答案 0 :(得分:0)
您正在运行的版本可能存在错误。
同时,改变
npm install -f
npm install webpack@2.2.0
到
INDEX(parent_id),
INDEX(display)
通过组合它们,查询将运行得更快(并且希望正确)。可能永远不会使用标志(INDEX(parent_id, display)
)的索引。