如果我有一个包含以下列作为主键的表:Username, Title, Start Date
,那么数据库将自动在其上创建索引。
- 如果我想按用户名选择,并开始查询日期.....它会使用上面的索引还是我需要指定一个额外的索引?
- 如果标题和开始日期唯一标识,但我还将用户名添加到主键,那会使其成为超级键吗?
1)如果我想按用户名选择,并开始查询的日期.....它会使用上面的索引还是我需要指定一个额外的索引?
你有一个复杂的条件,比如说,像这样:
username = 'blah-blah-blah' AND startdate > '01.01.2010'
如果您的表的 PK 定义如下:
PRIMARY KEY (Username, Title, StartDate)
然后索引将用于涉及用户名字段的第一部分。startdate 值将按自然顺序进行评估。
如果您希望索引用于复杂条件的两个部分,请在 startdate 上创建附加索引或更改 PK 中字段的顺序:
PRIMARY KEY (Username, StartDate, Title)
2)如果标题和开始日期唯一标识,但我也将用户名添加到主键,这会使其成为超级键吗?
最好不要滥用带有附加字段的唯一索引。在您的情况下,在标题和开始日期上创建 PK,然后(如果必要)在用户名字段上创建单独的索引。