我有一个在MySQL的(MyISAM的)这个查询:MySQL是阻止(或如何优化本)
SELECT * FROM `links` WHERE `id` IN (SELECT `link` FROM `posts` WHERE `read_time`<'2010-10-16')
它似乎确定了我,但MySQL的它挂断。 'links'是一个有16000行的表格,'posts'有大约5000行。 “ID”和“链接”是第一
我做了一些测试:除了一对情侣在每个表
- 删除所有记录。它的工作原理
- 执行内部查询(SELECT
link
FROMposts
WHEREread_time
< '2010-10-16')第一和执行外部查询(SELECT * FROMlinks
WHEREid
IN( '1232', '1354','3324 “))。它的工作原理 - 尝试升级我的Ubuntu,但它说,这是最后的MySQL版本(5.1.37-1ubuntu5.5)
发生了什么事?我发现了一个错误?或者我做错了什么?
不,这不是一个错误。正如马克·拜尔斯提到的那样,一个“JOIN”会更好地工作。如果我没有记错的话,“IN”会比较所有内容,最终得出16k * 5k的比较结果。 – Bobby 2010-12-16 12:39:19
发表你解释计划的答案将是不言而喻的 - 使用加入+索引 – 2010-12-16 12:39:33