sybase 索引
一、常用语句
1、建索引
create index 索引名 on 表名(索引名)
2、删索引
drop index 表名.索引名
3、重建索引
reorg rebuild 表名 索引名
4、查看索引
查看表结构包括索引:sp_help 表名
查看索引:sp_helpindex 表名
查看表、索引:
SELECT TOP 255
o.name tabName,i.name indName,
o.id id,
i.keys1 keys1,
i.keys2 keys2,
i.keycnt keycnt,
i.status status
from sysindexes i,sysobjects o
where keycnt>0 and i.id=o.id and o.type=‘U’
二、查看执行计划是否走索引
1、查看进程执行计划是否走索引
sp_showplan 进程号
2、分析语句执行计划是否走索引
SET NOCOUNT ON
SET SHOWPLAN ON
SET NOEXEC ON
GO
具体代码
GO
SET NOCOUNT OFF
SET SHOWPLAN OFF
SET NOEXEC OFF
GO
三、索引设计规范
1、DML频繁列的索引要定期维护(重建索引)
2、创建复合索引,把最常用于检索条件的列放在最前端,其他的列排在后面
3、当有复合索引,注意不要建重复的索引,如:
表EMPLOYEES,它的主键是建立在列DEPARTID和EMPLOYEEID上的联合主键,并且创建主键的语句中DEPARTID在前,EMPLOYEEID在后。在这样一个表里,通常就没有必要再为DEPARTID建一个索引了;联合索引的情况也一样
4、尽量使一个表的索引数量小于五个
5、不建议在频繁更新的字段上建立索引
6、避免在索引字段上使用函数,否则会导致查询时索引失效(考虑建函数索引)
7、表关联字段上建索引,字段类型保持一致(隐式转换导致不走索引)
8、不建议在单一值的列(如只有男、女2个值)、文本字段上建立索引
9、建议使用%后缀模糊查询,否则导致全表扫描
10、出现在SELECT、UPDATE、DELETE语句的WHERE从句中的列
11、包含在ORDER BY、GROUP BY、DISTINCT中的字段
12、对于复合索引来说,如果存在范围查询,比如between、>、<等条件时,会造成后面的索引字段失效
13、统计信息不准确,导致不走索引(定期表分析)