首页 > 数据库 >数据库为什么要索引(转)

数据库为什么要索引(转)

时间:2023-09-21 09:44:52浏览次数:32  
标签:为什么 数据库 索引 搜索 复杂度 logN 主键

总结:

  1. 数据库存储顺序随机,如果没有索引,每次查询都需要一行行遍历,查找出符合条件的点,复杂度 O(N)
  2. 数据库会按照 rowid 排序,并给主键建立索引,所以如果以 rowid 或者主键为搜索条件,复杂度可以近似看做二分查找的复杂度,即 O(logN)
  3. 如果没有主键,或搜索条件不是主键,可以给搜索目标增加索引,将该字段的搜索复杂度,提升到 O(logN)
  4. 如果搜索条件有多个,可以建立组合索引 (multi-column index),将搜索复杂度,降低到 O(k * logN)
  5. 注意,如果搜索条件中带有范围的搜索,可能导致索引失效,退化到 O(N) 复杂度,可以通过合理排列联合索引的字段顺序来避免。

https://blog.tankery.me/development/why-we-need-indexes-for-database

标签:为什么,数据库,索引,搜索,复杂度,logN,主键
From: https://www.cnblogs.com/zhangcheng2020/p/17719148.html

相关文章

  • MySQL数据库管理
    MySQL数据库管理概念数据(data)描述事物的符号记录包括数字、文字图形、图像、声音、档案记录以“记录”的形势按统一的格式进行存储表将不同的记录组织在一起用来存储具体数据数据库表的集合,是存储数据的仓库以一定的组织方式存储的相互有关的数据集......
  • MySQL索引、事务与存储引擎
    MySQL索引、事务与存储引擎索引介绍1、索引的概念索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。使用索引后可以不用扫描全表来定位某行的数据,而是先通过索引表找到该行数据对应的......
  • openGauss学习笔记-75 openGauss 数据库管理-创建和管理序列
    openGauss学习笔记-75openGauss数据库管理-创建和管理序列75.1背景信息序列Sequence是用来产生唯一整数的数据库对象。序列的值是按照一定规则自增的整数。因为自增所以不重复,因此说Sequence具有唯一标识性。这也是Sequence常被用作主键的原因。通过序列使某字段成为唯一标识......
  • DataGrip 2023:多功能的数据库管理软件
    DataGrip2023是由JetBrains开发的一款功能强大的数据库管理工具,它旨在提供一个集成的开发环境,方便开发人员管理和操作各种类型的数据库。DataGrip2023支持多种数据库系统,包括MySQL、PostgreSQL、Oracle、SQLServer等,它具有直观的用户界面,使用户能够轻松地连接到数据库服务器,进......
  • 推免复习(一):数据库复习提纲
    目录数据库基础概念数据、数据的定义、特性和分类数据模型、模式和实例数据库、数据库系统、数据库管理系统(DBMS)数据库的发展历程(层次模型、网状模型、关系模型、面向对象模型等)关系数据库关系数据模型的基本概念(关系、元组、属性、域)关系代数和关系演算数据完整......
  • 工业交换机为什么有必要进行老化测试?
    我们可以根据客户的要求来制定老化测试的检测标准,如果没有特别的要求,我们将依照国家相应的标准进行老化测试检验。老化测试的主要目的是通过模拟产品在现实使用过程中所面临的各种恶劣条件,对产品进行高强度的测试。同时,根据产品的使用要求,合理预测其使用寿命。老化测试是为了确保产......
  • mysql数据库服务双主搭建
    mysql数据库服务双主搭建1、搭建两台数据库服务环境,master,slave数据库搭建参考:https://www.cnblogs.com/zuouncle/p/17713806.html2、查看服务运行状态systemctlstatusmysqld 3、主库1(master)配置配置mysql的启动配置文件vim/etc/my.cnf#开启binlog日志log......
  • oracle数据库中查看表空间下各表占用表空间的大小
    背景:在做数据库巡检时,检查大表是必不可少的操作,可以查看各表占用表空间的大小,下面直接上例子,然后表空间名字我写成实际的了selectt.owner,t.segment_name,t.tablespace_name,bytes/1024/1024/1024assizes,q.num_rows,t.segment_typefromdba_segmentstleftjoindba_tablesq......
  • 安装达梦数据库
    下载地址:https://www.dameng.com/form/plogin/s/L2xpc3RfMTEwLmh0bWw%3D.html[root@bogon~]#unzipdm8_20230418_x86_rh6_64.zip#解压Archive:dm8_20230418_x86_rh6_64.zipinflating:dm8_20230418_x86_rh6_64.iso_SHA256.txtinflating:dm8_20230418_x86_rh6_6......
  • Mysql中如何批量更新数据库中某个字段值中的部分内容;
    在平时的开发过程中,偶尔会遇到需要批量更新数据库中某个字段值的部分内容,比如某个字段存储的是图片的URL路径,这个路径中的域名无法访问了,需要更新为另一个ip地址。Mysql中提供了REPLACE函数:可以使用了REPLACE函数来替换原来字段中的一部分数据为新值。UPDATEcar_data_hisSETc......