+18033634268

资讯中心
INFORMATION CENTER

IN和EXISTS进行子查询

在我刚进入编程世界时,我使用的数据库是SQL Server 当时做实验时,使用WHERE ID = 键值 和 WHERE IN (子查询) 时,效率是非常高的,因为是对主键查询,所以速度没有任何问题。

随后使用了mysql 进行开发,可是有一次处理大数据量时发现了性能问题,一条数据执行效率非常低下。

随后翻阅文档,才发现了问题所在:

SELECT * FROM T1 WHERE ID IN (SELECT ID FROM T2)

这是当时那条语句的模型。

如果T1表中的数据很大,T2表中的数据比较小,上面的语句是很快的,T1只被访问一次,

反之应该使用EXISTS替换IN语句,只是驱动表的顺序改变了,但是性能会发生很大变化。

任何知识的讨论都不应该脱离上下文以及语境,否则官方早就把IN语句消除了。

上一篇:SQL Server 2005 附加数据库常见错误

下一篇:Web设计和开发的前景与趋势

返回:BLOG首页

在线留言

ONLINE MESSAGE

  • 我们将在1个工作日内回复,资料会保密处理。

联系我们

CONTACT US

官方微信

廊坊市纵横网络技术有限公司

手机:18033634268
座机:0316-5556008