在SQL中建立索引
问题描述:
假设我的表有10列....我必须选择哪些列来创建索引?有没有任何指导原则可以做到这一点?索引有什么缺点?如果我更新列是INDEX的一部分,那么会发生什么?它会降低INDEXES的性能吗?在SQL中建立索引
答
从其他职位:
回答问题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语句必须修改索引中的数据以及表中的数据。他们还产生额外的撤消和重做。
答
需要索引为您的记录提供唯一标识。
更新记录时,索引应保持不变并保持不变。
索引不需要赋予记录唯一标识,但通常由RDBMS使用索引来高效地实现UNIQUE约束和主键。 – Unreason 2010-09-13 12:11:12
更新索引字段或索引的一部分(对于多字段索引)时,索引也会更新。 – Unreason 2010-09-13 12:12:37
关于自动编号索引的好处是唯一性的保证。你不需要它,但除非你这样做,否则它不能保证。 – 2010-09-13 12:39:13