【发布时间】:2021-12-17 06:14:12
【问题描述】:
我有一个巨大的数据库,其中包含人们的数据,包括(唯一的)姓名、所在国家/地区、出生日期等。我想通过以下方式在这个庞大的数据库中搜索人员列表:
SELECT * FROM table1 WHERE
NAME = 'Alice' OR NAME = 'Bob' OR NAME = 'Charlie'
鉴于这个数据集的大小,显然我在 WHERE 子句中包含的人越多,查询所需的时间就越长。可以说,我知道我要找的人位于英国。在我的查询中包含国家会减少搜索时间吗? SQL 会知道根据国家/地区缩小表格会减少搜索我想要的所有这些人的时间吗?或者它实际上只是它需要寻找的附加标准,从而降低性能?当有多个 OR、AND 部分时,SQL 如何知道哪个顺序最有效?我修改后的查询是:
SELECT * FROM table1 WHERE
COUNTRY = 'UK' AND (NAME = 'Alice' OR NAME = 'Bob' OR NAME = 'Charlie')
这样会更快吗?
编辑:我没有提到的另一件事是没有索引
【问题讨论】:
-
取决于索引等
-
最初没有索引
-
那会是个问题...
-
您能详细说明一下吗?
-
@minh98 - 研究索引及其功能/目的
标签: mysql sql performance