Sybase数据库在UNIX、Windows上的实施和管理 讨论6 显示某个登录用户的信息
《Sybase数据库在UNIX、Windows上的实施和管理》讨论6 显示某个登录用户的信息
近来大家讨论了一个问题,关于Sybase性能优化中,程序设计和编成对性能的“贡献率”,索引对性能的“贡献率”。
显然,性能和数据库设计、程序写法有着极大的关系,如果数据库没有好的设计,程序没有优化的编程,单凭Sybase参数优化、物理优化,这样的调整不可能有好的性能结果:应用程序、数据库后台程序决定了性能的80%,在硬件一定的条件下。
在应用已经确定的情况下,缩短响应时间的最佳办法是减少物理I/O,其方法来自于判断索引的有效性、必要性、正确性。总的来说,IO减少会导致性能提升缩短响应时间,而这很大程度上依赖索引:
-
在一定数据量下避免全表扫描。
-
定位查询中定位数据位置。
-
范围查询中确定上下限位置。
-
在索引科完全使用时采用索引覆盖,完全数据访问。
-
在连接时避免排序操作。
但不是什么时候都可以建立索引,一般情况下可以按照下面的原则创建初始的索引,并测试运行其有效性:
-
为Unique和primary key创建唯一索引,unique创建nonclustered多饮,primary key创建clustered索引;
-
如果可能用索引来覆盖查询,则可以使用索引覆盖来进行查询操作。
-
如果需要DML操作的表,如果将clustered索引建立了在单调递增的字段上,如序号列,则则坑农造成索引征用,如果恰好是allpages表,则锁争夺会成为必然。
-
如果能建立唯一性索引则最好唯一,这样优化程序知道只要返回一行纪录即可,及早结束查询。
-
索引键不可以太大,如使用小的数据类型。
-
创建索引时,“谁在前面”很关键;
-
应用程序中应尽量使用索引对象,如查询中引用被索引前导列
这段日子太忙,回复有些慢,但还是希望对大家有所帮助,文平
我们的工作团队致力于:
¨ 数据库+顾问服务