最近研究了一点DB2索引相关的东西,做一个总结:

(1)在作为主键的列上,强制该列的唯一性和组织表中数据的排列结构;

(2)在经常用连接的列(join)上建索引,这些列主要是一些外键,可以加快连接的速度;
(3)在经常根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的;这样查询可以利用索引的排序,加快排序查询时间;

(4)在经常使用在WHERE子句中的列上面创建索引,加快条件的判断速度。当增加索引时,会提高检索性能,但是会降低修改性能

(5)当创建复合索引时,应该考虑这些规则:

(a)在复合索引中,所有的列必须来自同一个表中,不能跨表建立复合列;

(b)在复合索引中,列的排列顺序是非常重要的,因此要认真排列列的顺序,原则上,应该首先定义最唯一的列,例如在(COL1,COL2)上的                 索 引与在(COL2,COL1)上的索引是不相同的,因为两个索引的列的顺序不同;

(c)为了使查询优化器使用复合索引,查询语句中的WHERE子句必须参考复合索引中第一个列;

(d)当表中有多个关键列时,复合索引是非常有用的;使用复合索引可以提高查询性能,减少在一个表中所创建的索引数量。

(6) 数据库是有缓存的,性能测试的时候,同一个SQL执行多次的话,除第一次外,后面的结果是缓存的。

(7) 关于select后面的字段是否建立索引一直有误区,这里澄清一下:

  select后面的列不用刻意建索引,如果where条件的列或join的列恰好在select后,这些列建索引,则不用回表查询;

  如果select后的列不在where条件后,也不是JOIN的条件,建索引是没有用的;

  如果select后的列既有索引列也有非索引列,那么必须回表查询。

(8)区分度低的列建立索引没有用:

比如性别;比如软删除标志deleted = 0/1

(9) amount != 0的这种不等于是不走索引的。

(10) 执行计划: 做SQL性能优化,第一步是看执行计划,分析SQL的瓶颈在哪,根据瓶颈进行优化。
  (11)  应尽量避免在 WHERE子句中对字段进行 NULL值判断,否则将导致引擎放弃使用索引而进行全表扫描

DB2 索引(2)的更多相关文章

  1. dB2 索引相关

    ALTER TABLE "XXXX"."tableA" PCTFREE 20 ; CREATE INDEX "schema"."X ...

  2. SQL Server,Oracle,DB2索引建立语句的对比

    原文引至:http://jvortex.blog.163.com/blog/static/16961890020122141010878/ 我们知道,索引是用于加速数据库查询的数据库对象.原理就是减少 ...

  3. db2索引创建和删除

    在表trpt_jv_rpt_log_td的tim列上创建索引 create index dw_rpt.irpt_jv_rpt_log_td_tim on dw_rpt.trpt_jv_rpt_log_ ...

  4. db2 索引

    索引:可通过 SYSCAT.INDEXES JOIN SYSCAT.INDEXCOLUSE来查询索引的字段有升序ASC和降序DESC,分别表示为SYSCAT.INDEXES的COLNAMES中索引字段 ...

  5. 0619数据库_MySQL_由浅入深理解索引的实现

    转自http://blog.csdn.net/u010003835/article/details/51563348 这篇文章是介绍MySQL数据库中的索引是如何根据需求一步步演变最终成为B+树结构的 ...

  6. DB2学习笔记备忘 2018.5.9

    DB2安装的时候选择了和系统用户一致的选项,然后登陆的时候,连接的时候输入的就是计算机用户的用户名和密码. 1.3 DB2数据库体系结构 系统 一个系统表示DB2的一个安装.在一个由很多及其组成的网络 ...

  7. [转帖]新一代IBM Z14主机技术介绍

    新一代IBM Z14主机技术介绍 https://cloud.tencent.com/developer/news/268909 IBM最新的已经有IBM Z15 主机了.. 文章来源:企鹅号 - 云 ...

  8. 数据库的元数据抽取SQL

    一.数据库驱动类.端口.默认用户名密码 数据库 驱动 端口 用户名 密码 MySQL com.mysql.jdbc.Driver 3306 root root DB2 com.ibm.db2.jcc. ...

  9. db2 order by 利用索引

    ORDER BY 通常会有两种实现方法,一个是利用有序索引自动实现,也就是说利用有序索引的有序性就不再另做排序操作了.另一个是把结果选好之后再排序. 用有序索引这种,当然是最快的,不过有一些限制条件, ...

随机推荐

  1. codevs 4014EZ系列

    4014 EZ系列之丁畅大大打小怪兽   题目描述 Description 丁畅大大除了喜欢吃鸡腿和番茄炒鸡蛋,还喜欢变成奥特曼去打小怪兽. 有一天,他遇到了迪迦!!!!!!!!!!!!!!!!!!! ...

  2. sqlite3 入门

    SQLite3 C语言API入门下载SQLite3 我们下载sqlite源码包,只需要其中的sqlite3.c.sqlite.h即可.最简单的一个创建表操作#include <stdio.h&g ...

  3. (2)React的开发

    实例: import React from 'react'; class TodoList extends React.Component { constructor(props){ super(pr ...

  4. golang 常见变成问题01

    Golang常见编程问题 --语言简单 func CopyFile (dst, src string) (w int64, err error) { srcFile, err := os.Open ( ...

  5. shell 命令的重命名alias

    1.实现别名:alias ddd="df -Th": 2.删除别名:unalias ddd: 3.显示所有别名命令列表:alias: 4.存放位置:~/.bashrc  (加入该文 ...

  6. Java Redis缓存穿透/缓存雪崩/缓存击穿,Redis分布式锁实现秒杀,限购等

    package com.example.redisdistlock.controller; import com.example.redisdistlock.util.RedisUtil; impor ...

  7. Java 操作Redis封装RedisTemplate工具类

    package com.example.redisdistlock.util; import org.springframework.beans.factory.annotation.Autowire ...

  8. 2018-2019-2 网络对抗技术 20165322 Exp8 Web基础

    2018-2019-2 网络对抗技术 20165322 Exp8 Web基础 目录 实验原理 实验内容与步骤 Web前端HTML Web前端javascipt Web后端:MySQL基础:正常安装.启 ...

  9. 文献阅读 | Epigenetics in ENS development and Hirschsprung disease

    系列篇: Epigenetics in ENS development and Hirschsprung disease - Review Epigenetic Mechanisms in Hirsc ...

  10. HttpWebRequest Timeout

    随着REST风格的流行,直接通过 HttpWebRequest 进行服务调用的客户端应用越来越多.这里总结一些可能需要费时调查的经验,希望能帮助大家. 1. 用完的HttpWebRequest要Abo ...