SQL:使用IN子句循环单选和一个选择

时间:2018-05-15 09:14:53

标签: sql loops

我想问你使用什么更快

  1. 循环数组和     调用选择XXX,​​其中id =

  2. 调用选择XXX其中id IN(数组的列表值)

2 个答案:

答案 0 :(得分:0)

第二个几乎总是更快。请记住,在第一个选项中,客户端(通常)必须执行完整的数据库连接,登录,发送查询,等待查询被解析,等待查询优化,等待查询执行,然后等待结果回来。在第二个选项中,所有这些步骤都完成了一次。

在某些情况下,第一个选项实际上更快如果您的索引架构不好而无法修复或服务器严重错误如何运行IN - 子句的分离,否则不能被告知。

答案 1 :(得分:0)

在数据库中完成所有工作应该总是更快。每次连接到数据库时都会产生一些开销。如果缓存查询计划并优化缓存,则此开销可能相对较小,但数据仍需要来回传递。

更重要的是,数据库引擎已经过优化,可以运行查询。一些数据库使用二进制查找来优化in表达式。并行数据库还可以利用多个处理器进行查询。如果from是一个视图或者您的查询更复杂,则性能会变差。

在某些情况下,性能差异可能并不明显 - 例如对于将表缓存在内存中的本地数据库。但是,您的习惯应该是在数据库中进行此类工作,而不是在应用程序中。