[英]Why does MySQL query return zero rows, but after defrag it works?
我有一個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
...
顯示屏上有一個索引(整數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
您正在運行的版本中可能存在錯誤。
同時,改變
INDEX(parent_id),
INDEX(display)
至
INDEX(parent_id, display)
通過組合它們,查詢將運行得更快(並有望正確運行)。 標志( display
)上的索引可能永遠不會使用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.