如何创建合适的索引

简介: 一、为什么数据库一定要有主键前提:主键应该为一个对业务无意义、一个有序递增的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、很少用于检索的列

相关文章
|
27天前
|
数据库 索引
联合索引和单独列索引哪个更好
【10月更文挑战第15天】联合索引和单独列索引哪个更好
44 2
|
6月前
|
存储 关系型数据库 MySQL
mysql索引优化,更好的创建和使用索引
mysql索引优化,更好的创建和使用索引
|
数据库 索引
简述创建索引的注意事项
创建索引是提高数据库查询性能的重要手段之一,合理地创建索引可以加快查询速度,提升数据库的整体性能。以下是创建索引时需要注意的几个重要事项:
288 0
|
存储 SQL 数据库
如何创建合适的索引
如何创建合适的索引
|
SQL 存储 关系型数据库
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
|
存储 自然语言处理 算法
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
MySQL中的索引包括普通索引、全文索引、单列索引、多列索引和空间索引等。
376 0
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
|
NoSQL 关系型数据库 MySQL
索引的管理操作 | 学习笔记
快速学习 索引的管理操作
119 0
索引的管理操作 | 学习笔记
|
JSON 分布式计算 Hadoop
创建索引库和索引演示 | 学习笔记
快速学习创建索引库和索引演示
创建索引库和索引演示 | 学习笔记
测试关于索引的操作-创建索引
测试关于索引的操作-创建索引
|
SQL 存储 缓存
索引不是越多越好,理解索引结构原理,才有助于我们建立合适的索引!
MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引。
653 0