博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

INDEX设立原则

Posted on 2008-05-26 09:20  不规则几何图形  阅读(292)  评论(0)    收藏  举报
 

(1) 目的

         (a) 增加查询的速度

         (b) 提高排序效率

         (c) 设定 table 连结的关系

         (d) 避免资料重复

   (2) 不适合建 index 的情形

         (a) 资料少于 200

         (b) 资料严重重复的字段 (譬如 'Y' 'N' 的字段

         (c) 过长的字符串字段(>20 bytes)

   (3) 其它

         (b) 不设 index则查询慢, 设太多index则新增、删除、修改慢

         (c) 两个连结 table 应在资料较多的 table index

         (d) 为了避免资料重复, 有时必须设 composite index, 亦即将

             数个字段合起来订为一个 index, 这程 index最大的优点在

             于唯一而不重复, 对于 SQL SELECT 的查询速度无太大帮

             , 事实上只有 composite index的第1个字段, 可以帮助

             提高查询速度, 所以 composite index, 重复愈少的column

             应设在愈前面的part.   (相当重要, 对速度影响很大)

         (e) 不常用的index不要设定, 以免影响正常 serach

         (f) priority: unique-->unique (composite)

                       dups  -->dups   (composite)

         (g) : data format   如下

                 store_num       char( 1)       库别

                 prod_ser_no     char(10)       产品料号

                 prod_type       char( 7)       产品类别

                 应该 create index 如下:

             unique index x1 on (prod_ser_no, prod_type, store_num)

             此键为一般的SQL 查询、表格连结、单一检查用, 因为对本

             资料而言料号重复者极少, 而库别值重复最多, 所以不以传

             统观念的顺序为 index 的顺序。

           (i) 最好不要超过 4index (否则会降Add & Update

                Performance, 此限制视状况而定, 非不可变者)

           (j) 避免对选择性差的列建立索引,优化器通常不使用这个索引,

                这样只会占用更多的磁盘空间并在插入、修改、删除时增加不

                必要的开销。