当前位置:网站首页>GBase 8t索引
GBase 8t索引
2022-04-23 01:17:00 【八珍豆腐】
索引是在数据库中提高数据查询处理性能的一个非常关键的技术,索引的使用可以对性能产生上百倍甚至上千倍的影响。
索引的基本概念
索引是用来快速查询表记录的一种存储结构。一般使用索引有一下两个方面。
1.确定记录的唯一性
通过创建唯一性索引来保证表中记录的唯一性要求.
2.提高数据查询的性能
提高表记录的查询性能是索引存在的最大优点。在没有索引的情况下。数据库优化器需要采取顺序扫描的方式扫描全表来查找目标记录。具体做法是,读取所有属于该表的数据页,从表的第一个数据页开始,顺序访问所有包含该表的设备,知道最后一页为止。返回满足条件的所有行。在扫描小表的记录和需要查找大表中大多数记录的情况下,顺序扫描是一种不错的选择,小表只占有很少的数据页,对于小表的顺序扫描需要的I/O非常小。对于在大表中进行全表扫描的情况,如数据仓库中对系统报表进行查询统计时,需要利用全表数据进行max、min、avg、sum等包含聚集函数的查询,此时整个表的数据都是查询结果所需要的,这使得顺序扫描优于随机扫描。
但是,顺序扫描在OLTP系统中性能太低,OLTP系统的特点是一个事务需要处理的记录数非常小,但是表中的记录量非常大。若要在大表中寻找满足一定条件的少量记录(比如<=5%),那么顺序扫描需要大量的I/O动作,同时消耗大量的内存,把不需要的数据页填充到内存缓冲区中,影响buffer的使用进而影响整个数据库的性能。因此我们不应该使用顺序扫描的方式去访问随机的或者非顺序存储的数据,这会导致非常明显的性能损失。那么在这种情况下,数据库通过查询索引中记录的行数据所在物理位置的信息,就可以快速读取满足条件的少量记录行,而不需要将整个表记录都读取到内存中,因此索引可以有效地减少I/O。
当两表进行关联连接且其中一张表很大时,索引也是必要存在的。在没有索引的情况下,两张表进行关联时,嵌套循环的迭代连接过程将严重影响表关联性的性能。此时需要将第一张表中每条满足条件的记录逐一与第二张表进行全表记录匹配,如果第二张表非常大,则全表扫描的方式将大大影响表关联的效率。在有索引的情况下,优化器可以通过索引找到目标记录,大大减少匹配次数。当然实际的数据库优化器会对没有索引的表实时创建Hash索引,采用Hash join方式进行关联。
索引是数据库中的一种结构或者对象,数据库索引与书或文件柜的索引非常像。它以记录的特征(通常是一个或多个字段的值)作为输入,能够快速找出具有该特征的记录,为查询提供了快速访问符合条件的数据行能力。利用索引进行随机访问时,能够最小化I/O,显著提高性能。数据库中的索引是一种动态的数据结构,它会和表中的数据一起改变。在一个表中可以有多个索引,用来满足不同查询的需要。
在下列几种情况下,数据库优化器可以使用索引对查询进行加速:
(1)使用随机访问方式替代全表数据的顺序访问时;
(2)查询表达式中只有索引列时,可以避免读取表中的其他数据行;
(3)在执行GROUP BY和ORDER BY子句时,避免不必要的排序的操作(包括创建临时表)。通常,数据库优化器决定是否需要使用索引,当然我们也可以强迫优化器使用或者避免使用索引。
在执行查询前,如果恰当地在列上建立了索引,则可以节省上千次、上万次,在极限情况下甚至节省上万次的磁盘I/O。但是索引也需要占用空间和资源,来进行额外的处理和索引维护工作。
版权声明
本文为[八珍豆腐]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_57486087/article/details/124321966
边栏推荐
- [JS] realize the export of PDF from the specified area of the web page
- 光猫超级帐号密码,重置光猫获取超级帐号密码
- Why should I object to DBA's participation in business (issuing reports / changing data)
- Acrel-5000型建筑能耗监测系统在西咸空港花园项目的研究与应用
- Basic knowledge of software testing (detailed version) collection of this article is enough
- Interface automation session authentication solution
- Secret of 66% performance surge: AMD 25000 yuan 768mb 3D cache Xiaolong opened the cover for the first time
- The complete form of smart home and the development of "small homekit"
- Hardware SPI analysis and configuration process of imx6ull bare metal development
- IMX6ULL裸机开发之配置eLCDIF点亮RGB液晶屏分析及配置过程
猜你喜欢

gin--hello

GBase 8s 备份介绍

Is it difficult for girls to learn software testing?

Redis forgets the password and resets the password

Workplace PUA, five sins of managers

安全用电管理平台在靖边博物馆安全用电管理系统的应用

How to introduce SPI into a project

IMX6ULL裸机开发之EPIT周期性定时器分析及配置过程

【Android工程师与智能家居产品的第一次接触③】SmartConfig一键配网在硬件端的具体实现|ESP8266一键配网在Arduino的具体实现|玉念聿辉

世界读书日:18本豆瓣评分9.0以上的IT书值得收藏
随机推荐
Acrel-5000型建筑能耗监测系统在西咸空港花园项目的研究与应用
VS+C# 实现窗体输入框默认显示灰色文字
Cloud native Virtualization: building edge computing instances based on kubevirt
"Self abuse artifact" exploded overnight: control your face with a handle, take your own code, and bear the consequences
From construction to governance, the industry's first white paper on microservice governance technology was officially released (including a free download link)
DCB "first brother" xianruida, what does it rely on to raise the value curve?
Interview eight part essay (disorderly order, no classification)
[JS] realize the export of PDF from the specified area of the web page
Is 2022 software testing easy to learn? How long will it take? (learning roadmap attached)
IMX6ULL裸机开发之配置eLCDIF点亮RGB液晶屏分析及配置过程
GBase 8s 备份介绍
"Open source summer" activity is hot. In the registration, rich bonuses are waiting for you to get!
Small example of gin - get request 1-handle handles get requests
In the second half of the smart watch, opportunities and challenges coexist
IMX6ULL裸机开发之硬件IIC分析及配置过程
Activity preview | on April 23, a number of wonderful openmldb sharing came, which lived up to the good time of the weekend!
Optical cat super account password, reset optical cat to obtain super account password
京东一面:子线程如何获取父线程 ThreadLocal 的值?我蒙了。。。
Ampere computing releases the computing power of observation cloud "core" and jointly promotes the development of observability
那些咸鱼上买来的代码|ssm酒店客房管理系统|买来的源码是否真的可以使用|来自程序员的困惑|玉念聿辉|大丑村吴明辉