给出一个包含四列的表
create table user
(
id int primary key,
username varchar(100),
age int,
country varchar(100)
);
最常见的查询基于用户名,年龄和国家/地区的where子句。例如:
select *
from user
where username = "Join Smith" and age > 18 and country = "UK"
如何建立最有效的索引以及为什么?
如果查询更改为
,该怎么办?select *
from user
where username like "John Smith" and age = 18 and country = "UK"
我会在所有三列用户名,年龄和国家/地区使用复合索引。但我不知道这对于哪种情况来说这是否最有效。请帮忙。
答案 0 :(得分:0)
始终建议将您的ID(作为主键,通常是最左侧列)与可用列保持不同,保持此edit = False。
现在这样做,我认为执行上述任何一个查询都不会有任何问题。
答案 1 :(得分:0)
按以下列顺序国家/地区,年龄创建索引 因为在两个查询中,country都是完全匹配的,如果它是index中的第一列,它将过滤掉结果 将年龄添加为索引中的第二列,它将执行完全匹配或范围查询