创建索引
CREATE INDEX ix_cars_employee_id ON Cars (EmployeeId);
这将为表 Cars 中的 EmployeeId 列创建索引。此索引将提高请求服务器按 EmployeeId 中的值排序或选择的查询速度,如下所示: ** **
SELECT * FROM Cars WHERE EmployeeId = 1
索引可以包含多于 1 列,如下所示;
CREATE INDEX ix_cars_e_c_o_ids ON Cars (EmployeeId, CarId, OwnerId);
在这种情况下,如果条件集以相同的方式排序,则索引对于要求对所有包含的列进行排序或选择的查询很有用。这意味着在检索数据时,它可以使用索引查找要检索的行,而不是查看整个表。
例如,以下情况将使用第二个索引;
SELECT * FROM Cars WHERE EmployeeId = 1 Order by CarId DESC
但是,如果订单不同,则索引不具有相同的优点,如下所示;
SELECT * FROM Cars WHERE OwnerId = 17 Order by CarId DESC
索引没有那么有用,因为数据库必须跨 EmployeeId 和 CarID 的所有值检索整个索引,以便找到哪些项目有 OwnerId = 17
。
(可能仍然使用索引;可能是查询优化器发现检索索引并对 OwnerId
进行过滤,然后只检索所需行比检索完整表更快,特别是如果表很大。)