2012-11-12 68 views
0

最近插入很多行到這些表,現在查詢超時:這真的是這麼複雜的查詢還是服務器速度慢?

SELECT * FROM eng 
WHERE english IN (SELECT eng FROM `eng-jap`) 
ORDER BY lastmodified DESC 

表CHI-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 

和表工程:

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 

只是SELECT * FROM表獲取(查詢花費0.0002秒)或者表

我只是不能相信,一個很簡單的子查詢像這樣一對夫婦K公司的每個表需要超過160秒的超時我已設置多點,然後超時......

我希望它像一個設置我表造成它。或MySQL真的不能做這樣的查詢?

回答

1

它必須交叉引用一張表中所有元素與另一張表中的所有元素。

這或許可以更好地工作:

SELECT `eng`.* FROM `eng` 
JOIN `eng-jap` ON `eng`.`english` = `eng-jap`.`eng` 
ORDER BY `eng`.`lastmodified` DESC 

另外,還要確保你有適當的定義指標。這將有助於加快查詢速度。

+0

您的查詢也超時。我在表格上編制索引,但我放棄了它,看看是否會阻止超時。在我最近更新之前(很多插入),這個查詢工作得很快,似乎沒有任何滯後時間。所以看起來很奇怪,突然在表中有更多的行超出了... – user1397417

+0

我仔細觀察並重新定義了我的索引,現在搜索很快就會重新開始。謝謝 – user1397417

相關問題