如何创建合适的索引

简介: 一、为什么数据库一定要有主键前提:主键应该为一个对业务无意义、一个有序递增的int或number型字段1、 可以利用主键字段在数据底层存储上能有序的存储,能有效防止底层存储在DML时底层数据的可能存在迁移情况(行迁移、行连接等),影响底层数据存储上空间和性能的严重损耗2、利用主键能够快速定位和update、delete快速更新或删除3、能够提高OGG的快速同步和数据一致性保障

一、为什么数据库一定要有主键


前提:主键应该为一个对业务无意义、一个有序递增的int或number型字段


1、 可以利用主键字段在数据底层存储上能有序的存储,能有效防止底层存储在DML时底层数据的可能存在迁移情况(行迁移、行连接等),影响底层数据存储上空间和性能的严重损耗


2、利用主键能够快速定位和update、delete快速更新或删除


3、能够提高OGG的快速同步和数据一致性保障


 

二、什么样的字段一定要创建索引


1、表与表之间经常join的字段

2、经常在where条件中列

3、复合索引创建指引:当where条件中出现多个条件列的时候,应该按照重复值越低且符合大部分业务场景查询的列作为前导列,减少数据的回表,直接能从索引中返回要的数据

比如:

where idcard_no ='111111111'  and update_time=trunc(sysdate)   
 idcard_no为个人身份证,该字段几乎为唯一,重复值很低,可以作为复合索引的前导列
 update_time为更新时间,该字段会存储非常多的重复值,可以和idcard_no结合创建成复合索引

三、什么样的字段一定不能建立成索引


1、基数很低的列(比如性别,type等重复值很高的列)

2、更新频繁但检索不频繁的列

3、BLOB/TEXT等长内容列

4、很少用于检索的列

相关文章
|
7月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
c++ 如何做出实现一组数据的实际索引
|
10月前
|
存储 自然语言处理 NoSQL
【Java项目】1000w数据量的表如何做到快速的关键字检索?
【Java项目】1000w数据量的表如何做到快速的关键字检索?
81 0
|
10月前
|
数据库 索引
简述创建索引的注意事项
创建索引是提高数据库查询性能的重要手段之一,合理地创建索引可以加快查询速度,提升数据库的整体性能。以下是创建索引时需要注意的几个重要事项:
217 0
|
11月前
|
存储 程序员 C语言
c++ 如何做出实现一组数据的实际索引
C++是一种计算机高级程序设计语言, 由​​C语言​​​扩展升级而产生 , 最早于1979年由​​本贾尼·斯特劳斯特卢普​​在AT&T贝尔工
|
12月前
|
存储 SQL 数据库
如何创建合适的索引
如何创建合适的索引
|
SQL 存储 关系型数据库
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
|
存储 自然语言处理 算法
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
MySQL中的索引包括普通索引、全文索引、单列索引、多列索引和空间索引等。
217 0
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
|
JSON 分布式计算 Hadoop
创建索引库和索引_演示|学习笔记
快速学习创建索引库和索引_演示。
61 0
|
JSON 分布式计算 Hadoop
创建索引库和索引演示 | 学习笔记
快速学习创建索引库和索引演示
79 0
创建索引库和索引演示 | 学习笔记
测试关于索引的操作-创建索引
测试关于索引的操作-创建索引