2010-09-13 78 views
2

假设我的表有10列....我必须选择哪些列来创建索引?有没有任何指导原则可以做到这一点?索引有什么缺点?如果我更新列是INDEX的一部分,那么会发生什么?它会降低INDEXES的性能吗?在SQL中建立索引

回答

3

从其他职位:

回答问题1:

1.1您应该经常使用在WHERE子句中的列创建索引。

1.2您应该在经常用于连接表的列上创建索引。

1.3您应该在ORDER BY子句中经常使用的列上创建索引。

1.4您应该在表中具有少数相同值或唯一值的列上创建索引。

1.5由于全表扫描可能比索引查询更快,因此不应在小表(仅使用少数块的表)上创建索引。

1.6如果连续索引中的多个列在WHERE子句中频繁使用,请将最具选择性的列放在CREATE INDEX语句中。

1.7列中有许多空值,您不搜索非空值。

1.8主键和唯一键自动具有索引,但您可能需要在外键上创建索引;

回答问题2:

2.1以前的规则

回答问题3:

3.1如果不考虑以前的建议,那么指数变在数据库的良好性能中中断。

回答问题4和5:

4.1,5.1不要被频繁修改索引列。修改索引列的UPDATE语句和修改索引表的INSERT和DELETE语句比没有索引时花费的时间更长。这些SQL语句必须修改索引中的数据以及表中的数据。他们还产生额外的撤消和重做。

1

需要索引为您的记录提供唯一标识。

更新记录时,索引应保持不变并保持不变。

+0

索引不需要赋予记录唯一标识,但通常由RDBMS使用索引来高效地实现UNIQUE约束和主键。 – Unreason 2010-09-13 12:11:12

+0

更新索引字段或索引的一部分(对于多字段索引)时,索引也会更新。 – Unreason 2010-09-13 12:12:37

+0

关于自动编号索引的好处是唯一性的保证。你不需要它,但除非你这样做,否则它不能保证。 – 2010-09-13 12:39:13