最近在这些表中插入了很多行,现在查询超时了:
SELECT * FROM eng
WHERE english IN (SELECT eng FROM `eng-jap`)
ORDER BY lastmodified DESC
表eng-jap有大约25,000行,这里有一些统计数据:
Format dynamic
Collation utf8_general_ci
Rows 24,960
Row length ø 316
Row size ø 328 B
Next Autoindex 26,468
Type Usage
Data 7,724.0 KiB
Index 264.0 KiB
Total 7,988.0 KiB
和表格eng:
Format dynamic
Collation utf8_general_ci
Rows 23,691
Row length ø 105
Row size ø 117 B
Next Autoindex 24,771
Type Usage
Data 2,451.4 KiB
Index 260.0 KiB
Total 2,711.4 KiB
只需从表格中选择*获取(查询花费0.0002秒)以获取任何一个表
我只是不能相信这样一个非常简单的子查询,每个表中有几个k需要超过我设置的160秒超时,然后超时......
我希望它就像我的桌子中的一个设置导致它。或者mysql真的不能这样做一个查询?
答案 0 :(得分:1)
它必须交叉引用一个表中的所有元素与另一个表的所有元素。
也许这可能会更好:
SELECT `eng`.* FROM `eng`
JOIN `eng-jap` ON `eng`.`english` = `eng-jap`.`eng`
ORDER BY `eng`.`lastmodified` DESC
还要确保定义了合适的索引。这有助于加快查询速度。