最近在这些表中插入了很多行,现在查询时间:
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
和table 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真的不能这样的查询?
它必须从一个表中交叉引用所有元素,其中所有元素都具有另一个元素。
也许这可能更好:
SELECT `eng`.* FROM `eng`
JOIN `eng-jap` ON `eng`.`english` = `eng-jap`.`eng`
ORDER BY `eng`.`lastmodified` DESC
还确保已定义合适的索引。这将有助于加快查询。