作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
假设我有一个 40MM 9 位邮政编码的 Oracle 数据库表,其中包括每个邮政编码的 4 位邮政编码。我有一个包含 800 个 5 位邮政编码的列表,我需要找到所有相关的 9 位邮政编码。总共有 40K 个 5 位邮政编码。假设我们已经使用 B*Tree(常规)索引对 5 位邮政编码字段进行了索引。考虑到数据库性能和可伸缩性,最好的方法是:
在一条语句中查询所有记录?像这样运行一次:
SELECT * FROM ZIPCODE WHERE ZIP5 IN (:1, :2,... :800)
为每个 5 位邮政编码查询一次?像这样运行 800 次:
SELECT * FROM ZIPCODE WHERE ZIP5 = :1
一些批量大小介于两者之间?
你怎么看,为什么?如果您处于思考状态,一些 [可选] 后续想法:
最佳答案
让数据库服务器决定如何处理它。即使它在内部执行 800 次查询,它仍然会更快。它只需解析一次查询,并且只需发送一次结果。
因此,使用 SELECT * FROM ZIPCODE WHERE ZIP5 IN (:1, :2,... :800)
关于sql - 查询性能,多个 "OR' s"与单独的语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205581/
我是一名优秀的程序员,十分优秀!