【发布时间】:2018-03-10 17:41:42
【问题描述】:
假设我们要从表中检索n 元素(类型为string/varchar(64))。
我们假设 0 n
这两个中哪个最快并且需要的资源更少?
SELECT id, last_name
FROM Users
WHERE last_name="a"
OR last_name="b"
OR last_name="c"
OR last_name="d"....
对
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)
【问题讨论】:
-
如果您在
last_name上有索引,那肯定会更快。无需返回表中的所有内容,然后在另一段代码中迭代该结果。此外,您应该查看IN (),而不是列出所有OR语句。 -
根据我的经验,我可以说,如果它在数据库中,几乎所有东西都比处理从数据库加载的数据要快。
-
非常感谢,我不确定是否要比较查询的
WHERE部分中的所有这些值! -
你能用IN吗,如果你只用SQL就能做到,那总是最好最快的。您的值是在内存中还是在另一个表中? RDBS 引擎擅长思考集合理论和 IN ;)
标签: mysql sql database performance database-performance