假设我们想要从表中检索n
个元素(类型string
/ varchar(64)
)。
我们假设0< = n
< 1000。
这两个中哪一个最快,需要的资源更少?
SELECT id, last_name
FROM Users
WHERE last_name="a"
OR last_name="b"
OR last_name="c"
OR last_name="d"....
VS
SELECT id, first_name, last_name
FROM mytable
然后用于过滤输出的代码处理,例如在简单的Python中:
result = []
for last_name in output:
if last_name in POSSIBLE_NAMES:
result.append(last_name)
答案 0 :(得分:2)
第一个应该是最快的。过滤数据库中的 是最佳选择 - 我无法想到任何例外情况。
代码应写为:
SELECT id, last_name
FROM Users
WHERE last_name IN ('a', 'b', 'c', 'd', . . . );
(如果您也需要first_name
,请将其放入SELECT
。
单引号是字符串常量的ANSI标准,IN
比一堆OR
表达式更短(性能更好!)。
为什么这样更好?
IN
。