Print

创建联合索引对字段重复率的要求

问:DB2 联合索引和单独索引
  1. 答:联合索引:比如你建立了(A,B),那么你查询条件为A或者A,B时会走索引,如果为B,就不会走索引
    单独索引:会用到索引,但是有时候效率低下,不如联合索引。
问:在oracle中,在列的取值重复率比较高的列上,适合创建什么索引
  1. 答:靠看是怎么应用这列数据。
    索引并不是一定要建立,如果是一般查询用,那么可以考虑联合索引,增加辨识度。
    如果是分组查询用,那么可以考虑位图索引。
  2. 答:可以尝试使用bitmap索引
问:Mysql多表联合索引
  1. 答:Mysql多表联合索引:
    1、多表联合索引在查询语句中能加速查询速度。select * from table1,table2 where table1.id = table2.id。
    2、多表联合的索引的sql语法,一个user表有4个字段 id name age sex,分别给name age sex建立三个单独的索引,此时建立create index name_age_sex on user(name,age,sex)这个新建立的索引跟前面那三个是独立的。就是说又新建立了空间存储这个新索引。
    3、索引的维护主要包括定期清理数据碎片。
  2. 答:首先不同的表是无法使用索引的,联合索引指的是同一张表的不同字段。优化需要看两张表数据量。一般的做法是:select * from (select * from A where X = 'xxxx') as aa left join B on B.id=aa.id order by B.datetime;建立 单独对A.X A.id B.id 建立索引。
问:如果所建立索引的字段值不允许重复,并且一个表中只能建立一个,该索引是什么
  1. 答:主键 但是主键还有一个特性就是字段不能为空
问:关于Oracle的联合索引的一些疑问
  1. 答:这个问题比较复杂
    首先:
    如果建立联合索引A,B,那么如果where中只有B的话,那么肯定不会使用索引
    如果使用单个索引A 和 B 的话,那么一般来说,同时where中同时出现A条件B的话,那么效率没有联合索引高。
    具体查询时,是否使用索引,使用哪个索引,并不能总是原先知道,这个要根据oracle的统计数据,oracle仔细进行判断。
    所以如果可能的话,可以同时增加 A、B列单独索引,也增加A、B列联合索引。
  2. 答:一般是这样:
    A B 同时作为谓词条件, 可以为 A、B联合索引, 也可以是 A 或 B的独立索引 视乎选择性
    B 作为谓词条件, 可以为 B、A联合索引, 也可以是B的独立索引
    A 作为谓词条件, 可以为 A、B联合索引 , 也可以是A的独立索引

本文来源: https://www.lunwen22.cn/article/6af6712576a6eec88bec6d30.html