MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

这篇具有很好参考价值的文章主要介绍了MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

select count(*) from user_login_log;
select * from user_login_log limit 10000,100;
select * from user_login_log limit 10000,1000;
select * from user_login_log limit 10000,10000;
select * from user_login_log limit 10000,100000;
select * from user_login_log limit 10000,1000000;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

 数据量越大,花费时间越长

select * from user_login_log limit 100,100;
select * from user_login_log limit 1000,100;
select * from user_login_log limit 10000,100;
select * from user_login_log limit 100000,100;
select * from user_login_log limit 1000000,100;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

 文章来源地址https://www.toymoban.com/news/detail-463269.html

偏移量越大,花费时间越长(浅层分页到深层分页)

SQL优化:

1.MySQL自身

2.网络IO

3.SQL自身

--原SQL

select * from user_login_log limit 10000,100000;

--避免使用select *

select user_id,ip,sttr1,attr2,attr3,attr4,attr5,attr6,attr7,attr8,attr9,attr10 from user_login_log limit 10000,100000;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

 全表扫描,查询效率慢

--按需查找字段

select id from user_login_log limit 10000,100000;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

explain
select id from user_login_log limit 10000,100000;

 MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

 使用索引扫描,主键索引,进行提升

select user_id from user_login_log limit 10000,100000;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

--覆盖索引

alter table user_login_log add index idx_user_id(user_id);
select user_id from user_login_log limit 10000,100000;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

查询字段索引覆盖,通过辅助索引提升查询效率

针对数据量大的情况,我们可以做如下优化:

按需查询字段,减少网络IO消耗

避免使用select *,减少MySQL优化器负担

查询的字段尽量保证索引覆盖

借助nosql缓存数据缓解MySQL数据库的压力

select * from user_login_log limit 1000000,100;

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

--增加索引where条件,缩减数据范围

select * from user_login_log where id> 1000000 limit 100;

 

MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化

偏移量大的场景,我们可以使用数据量大的优化方案,除此之外还可以将偏移量改为使用id限定的方式提升查询效率

针对偏移量大的情况,我们可以做如下优化:

添加where条件缩减条数,然后limit关键再进行数据筛选

 

到了这里,关于MYSQL中1000万条数据你是怎么查询的,查询非常慢怎么优化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • mysql mybatis分页查询 大数据量 非常慢

     查阅了很多博客和资料,这篇文章以思路为准,详细代码不细说,都是非常简单的方法,一看就明白。具体实现稍微百度一下就能出来。仅供参考。 如题:单表数据已经达到4千万条数据,通过mybatis的分页查询效率非常低下。         当然,前提是索引什么的优化已经都

    2024年01月19日
    浏览(36)
  • java 批量插入千万条数据优化方案【值得收藏】

    再实际开发应用中总会面临导入大批量数据插入数据库、数据迁移、同步等操作在java 后台执行,执行效率的优化问题随之而来!比如如何 快速往MySQL数据库中导入1000万数据 2、MySQL中新建一张user表,为了方便演示只保留id、昵称、年龄3个字段,建表语句; 3、再次打开pom.x

    2023年04月23日
    浏览(40)
  • 【性能优化】MySql数据库查询优化方案

    了解系统运行效率提升的整体解决思路和方向 学会MySQl中进行数据库查询优化的步骤 学会看慢查询、执行计划、进行性能分析、调优 ​关于这个问题,我们通常首先考虑的是硬件升级,毕竟服务器的内存、CPU、磁盘IO速度 、网络速度等都是制约我们系统快慢的首要因素。硬

    2024年02月03日
    浏览(57)
  • Mysql如何优化数据查询方案

    mysql做读写分离 读写分离是提高mysql并发的首选方案。 Mysql主从复制的原理 mysql的主从复制依赖于binlog,也就是记录mysql上的所有变化并以二进制的形式保存在磁盘上,复制的过程就是将binlog中的数据从主库传输到从库上。 主从复制过程详细分为3个阶段: 第一阶段:主库写

    2024年02月21日
    浏览(43)
  • MySQL千万数据查询优化之路

    本文主要针对 MySQL 在千万级别数据的分页查询性能进行优化, 下面是整个优化的过程. 先说结论, MySQL 在千万级别数据的分页查询性能主要受到 2 个因素的影响: 查询的偏移量 查询的数据量 查询的偏移量优化 当 MySQL 执行查询语句分页 LIMIT 时, 有 2 个步骤需要先按照指定的排序

    2023年04月09日
    浏览(45)
  • Java怎么实现几十万条同时数据插入(三种基本方法测试)

    目录 1,使用批量插入  2,使用多线程 3,使用存储过程 在Java中实现插入几十万条数据,有多种方法可以使用。以下是其中的几种: 使用批量插入可以有效地提高插入速度。下面是一个示例代码: 使用多线程可以将数据分为多个部分并行插入,提高效率。以下是一个示例代

    2024年02月14日
    浏览(37)
  • 如何往MySQL中插入100万条数据?

    现在有一个 数据量 为100万的数据样本 100w_data.sql 其数据格式如下,截取最后十条数据 999991,XxGdnLZObA999991,XxGdnLZObA,XxGdnLZObA,2020-3-18,1 999992,TBBchSKobC999992,TBBchSKobC,TBBchSKobC,2020-9-8,2 999993,rfwgLkYhUz999993,rfwgLkYhUz,rfwgLkYhUz,2020-2-6,0 999994,GQZXukHouW999994,GQZXukHouW,GQZXukHouW,2020-9-16,1 999995,UMNjgaXtn

    2024年02月15日
    浏览(34)
  • mysql:IN最多只能查询1000个,如果要一次性查询出来,使用以下sql实现

    1、 if test=\\\"(index % 999) == 998\\\" :余数等于998,将,置为NULL SELECT mph.PO_HEADER_ID, mph.PO_NUMBER, mid.INSTRUCTION_DOC_STATUS, mid.INSTRUCTION_DOC_NUM FROM mt_po_header mph LEFT JOIN mt_instruction mi ON mi.SOURCE_ORDER_ID = mph.PO_HEADER_ID LEFT JOIN mt_instruction_doc mid ON mid.INSTRUCTION_DOC_ID = mi.SOURCE_DOC_ID WHERE mph.TENANT_ID = 7 AND

    2023年04月09日
    浏览(64)
  • MySQL 联表查询重复数据并删除(子查询删除记录) SQL优化

    数据库表介绍: table_a :主表(小表,表数据不可重复) table_b :流水表(大表,记录审核流水数据) 注:两表表结构大致一致,流水表增加一个审核状态的字段 业务逻辑: 主表保存唯一数据,流水表记录审核流水数据,用于后续展示,并在审核成功后插入主表,在插入流

    2023年04月08日
    浏览(62)
  • MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句 ---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N ---适应场景: 适用于数据量较少的情况(元组百/千级) ---原因/缺点: 全表扫描,速度会很慢 且 有的数据库 结果集返回不稳定 (如某次返回1,2,3,另外的一次返回2,1,3). Limit限制的是从

    2024年02月15日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包