首页 > 其他分享 >Myslq千万级数据量查询

Myslq千万级数据量查询

时间:2024-08-23 11:06:34浏览次数:4  
标签:2400 索引 扫描 千万级 查询 Myslq 数据量 MySQL

两千四百万数据量SQL查询

image

没有索引时

如果字段无索引,耗时十分钟
image

无索引查询过程

MySQL 需要对 2400 万条数据一一进行比较,假设每条记录的处理时间为 0.025 ms,那么总查询时间大约为 10 分钟(即 2400 万 × 0.025 ms)。
•全表扫描: 当查询 kh = '03356129487' 时,如果表上没有对 jd_kh 字段创建索引,MySQL 会执行全表扫描。这意味着 MySQL 需要从头到尾逐行读取表中的所有 2400 万条记录,逐条比较kh字段的值,找到符合条件的记录。
•数据量大: 由于表中有 2400 万条记录,全表扫描在每一条记录上都执行一次比较操作,耗时非常长,通常会导致查询的时间成倍增长。

有索引时

有索引时,耗时0.22秒
image
有索引查询过程
使用 B-Tree 索引时,查找过程可能只需要经过 20 次左右的比较操作就能定位到目标数据,处理时间仅为数毫秒。

有索引查询过程

•使用索引查找: 当在kh字段上创建了索引后,MySQL可以利用这个索引来快速定位到符合条件的记录。索引类似于一本书的目录,能够快速指向数据所在的位置,而不必逐条扫描整个表。
•索引的工作原理: 索引通常使用数据结构如 B-Tree 或 Hash 实现,这些结构使得查找操作的时间复杂度为 O(log N) 或 O(1),远远快于全表扫描的 O(N)。
•减少 IO 操作: 使用索引意味着 MySQL 不需要读取整个表,只需访问特定的索引节点,然后直接定位到目标记录,大大减少了磁盘 IO 操作的次数,从而大幅提升查询速度。

索引的影响

作用

•提高查询效率: 索引通过将查找过程缩小到更少的数据范围,大幅减少了需要扫描的数据量。
•降低计算复杂度: 索引的使用将查询复杂度从线性时间 O(N) 降低到对数时间 O(log N) 或更低,这就是查询速度差距如此之大的根本原因。

注意事项

•索引的选择: 并不是所有字段都适合创建索引,索引会占用额外的存储空间,并在数据写入(INSERT/UPDATE/DELETE)时带来一定的性能开销。因此,应该在查询频繁、选择性高的字段上创建索引。
•索引维护: 定期维护索引(如重建索引、分析表等)有助于保持索引的高效性。

标签:2400,索引,扫描,千万级,查询,Myslq,数据量,MySQL
From: https://www.cnblogs.com/aeolian/p/18375477

相关文章

  • Python-批量统计MySQL中表的数据量
    背景在数据中台中,有时为了核对数据,需要每天批量统计MySQL数据库中表的数据量,但是DMS中没有周期调度功能。MySQL创建表--统计的表清单CREATETABLE`dws_table_list`(`table_name`varchar(255)DEFAULTNULL,`flag`varchar(255)DEFAULTNULL);--每天的数据量CRE......
  • ThinkPHP6定时任务同步千万级流水数据
    ThinkPHP6定时任务同步千万级流水数据多数据源配置自定义指令<?phpdeclare(strict_types=1);namespaceapp\command\SyncDtaTask;usethink\console\Command;usethink\console\Input;usethink\console\Output;usethink\Exception;usethink\facade\Db;/***......
  • Mac导出Mysql千万级表数据
    MysqlDumpmysqldump-h[服务器地址]-u[用户名]-p[密码]--single-transaction--quick[数据库名][表名]>[导出文件.sql]•--single-transaction保证了数据的一致性,并且不会在导出期间锁定表(只针对InnoDB有效)。•--quick选项进一步减少了内存使用,因为它逐行导出数......
  • vb6 链接MySLQ 数据库过程记录
    1必须安装mysql 驱动 vb6是32位 所以必须到mysql 网站下载32位ODBC 驱动2vb6必须添加引用 见代码3总结 主要是版本一定去下载32位mysql ODBC驱动来安装PrivateSubCommand1_Click()'‘需要添加ado'菜单"工程"->"引用"找MicrosoftActiveXDataObject........
  • 10W数据量导入与现有表数据去重
    使用的是PostgreSQL在做大数据量(十万级)导入时,某些字段和数据库表里数据(千万级)重复的需要排除掉,把表数据查询出来用程序的方式判断去重效率很低,于是考虑用临时表。先把新数据插入到临时表里,临时表结构和原始表一致。用SQL的方式把不重复的数据DataA查询出来。把DataA插入到......
  • ElasticSearch第4篇(亿级中文数据量 ElasticSearch与Sphinx建索引速度、查询速度、并发
    经过实测:1.09亿的数据量进行中文检索。ElasticSearch单机的检索性能在0.005~5.6秒之间,此检索速度可满足95%的业务场景(注意:每条ES文档平均65个汉字,数据源取自几千本小说,大部分文档在15~300个汉字之间,不然字数太多索引太大电脑存不下)。前置文章由于本文章的前置操作强依赖于另一篇......
  • DevExtreme框架由于数据量太大,加载太慢,采用分页方式进行处理(基本上所有的操作都从客户
    首先我们需要引入官方的一个函数:importCustomStorefrom'devextreme/data/custom_store';我们需要通过这个函数去处理交互数据 先放个图: 上图中跟分页有关的属性分别是:1.:data-source="store",这个是存放数据源用的,需要用到我们上面的CustomStore函数,2.:remote-oper......
  • 『性能』List 和 HashSet 查找性能比较 (任何数据量的检索 从此只用 HashSet )
    最近优化代码性能采用此方法效率明显提升,特此与大家共勉,同时感谢作者的无私分享!原作者文字地址:https://www.cnblogs.com/shuxiaolong/p/List_HashSet.html『性能』List和HashSet查找性能比较(任何数据量的检索从此只用HashSet)结论:总数50000(5万):List检索5W次耗时2......
  • 基于LEACH路由协议的网络性能matlab仿真,包括数据量,能耗,存活节点
    1.程序功能描述       LEACH的原理在于它将传感器节点分为两类:簇头节点和普通节点。普通节点将数据发送给距离自己最近的簇头节点,然后簇头节点将收集到的数据融合后发送给基站。这种机制可以减少网络中节点的能耗,并且能够提高数据融合比例,减少传输数据量。本课题将分别对......
  • MySQL单表千万级数据查询优化大家怎么说(评论有亮点)
    题图来自APOD上次写了一篇MySQL优化实战的文章“MySQL千万级数据从190秒优化到1秒全过程”。这篇文章主要还是在实战MySQL优化,所以从造数据到查询SQL优化SQL都没有业务或者其它依赖,优化的技巧也不涉及软件架构就是纯SQL优化。由于笔者经验有限和篇幅限制没有展开讲很多细节,其......