如何创建合适的索引

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

相关文章
|
3月前
|
Python
字典是怎么创建的,支持的操作又是如何实现的?
字典是怎么创建的,支持的操作又是如何实现的?
70 8
|
4月前
|
关系型数据库 MySQL 数据库
MYSQL索引的分类与创建语法详解
理解并合理应用这些索引类型,能够有效提高MySQL数据库的性能和查询效率。每种索引类型都有其特定的优势,适当地使用它们可以为数据库操作带来显著的性能提升。
189 3
|
8月前
|
存储 关系型数据库 MySQL
mysql索引优化,更好的创建和使用索引
mysql索引优化,更好的创建和使用索引
|
数据库 索引
简述创建索引的注意事项
创建索引是提高数据库查询性能的重要手段之一,合理地创建索引可以加快查询速度,提升数据库的整体性能。以下是创建索引时需要注意的几个重要事项:
298 0
|
存储 SQL 数据库
如何创建合适的索引
如何创建合适的索引
|
数据可视化 数据挖掘 图形学
【数据篇】32 # 如何选择合适的方法对数据进行可视化处理?
【数据篇】32 # 如何选择合适的方法对数据进行可视化处理?
122 0
【数据篇】32 # 如何选择合适的方法对数据进行可视化处理?
|
数据可视化
【数据篇】34 # 如何处理多元变量?
【数据篇】34 # 如何处理多元变量?
165 0
【数据篇】34 # 如何处理多元变量?
|
SQL 存储 关系型数据库
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
索引的创建与设计原则(2)(适合创建索引情况 )
|
存储 自然语言处理 算法
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
MySQL中的索引包括普通索引、全文索引、单列索引、多列索引和空间索引等。
400 0
【MySQL从入门到精通】【高级篇】(十九)索引的分类&创建索引的三种方式&删除索引的两种方式
|
存储 NoSQL 搜索推荐
索引的概述和类型 | 学习笔记
快速学习 索引的概述和类型
索引的概述和类型 | 学习笔记