【发布时间】:2021-12-12 22:45:54
【问题描述】:
我想在数据库中查询使用姓名和出生日期的人员列表。要查询的人员列表由用户在 Python 中提供,我的代码构造查询字符串以提交到数据库。我正在使用类似于以下查询的内容:
SELECT * FROM table WHERE
(name = 'Alice' AND dob = '2000/01/01') OR
(name = 'Bob' AND dob = '2000/01/02') OR
(name = 'Charlie' AND dob = '2000/01/03') OR ...
这可以正常工作,但是当人数为数百人且使用 OR 分隔的相同数量的 WHERE 子句时会变得很慢。有什么方法可以让这个查询更有效率吗?我读到使用一个不使用 OR 的 WHERE 子句使用 IN 可能会更快,但我不知道如何合并出生日期:
SELECT * FROM table WHERE name IN('Alice', 'Bob', 'Charlie',...) AND dob IN()
并且需要以某种方式将出生日期与他们各自的姓名相匹配。有什么好的提高查询性能的解决方案?
【问题讨论】:
标签: mysql sql query-optimization sqlperformance