MySQL大数据量表根据非索引字段检索优化

MySQL大数据量表根据非索引字段检索优化

项目背景

在项目业务中经常会出现根据非索引字段查询数据的场景。如根据根据订单支付状态查询未支付或者已支付的的订单信息进行一些业务处理。
假设订单表支付状态列有两个值(1-已支付/0-未支付),实际项目中由于此字段仅有两个值是不适合加索引的,所以当我们仅根据支付状态字段查询订单信息的时候其实是进行的全表扫描。如下图所示:
这里写图片描述

执行该SQL耗时如下:

这里写图片描述

优化思路

MySQL数据表主键id默认为唯一索引,所以可根据ID排序+做分页来实现索引。但是此分页跟普通分页有所不同,即此分页不查符合查询条件的总条数。
查第一页的时候查询出符合条件的第一页数据的id最大值,如下所示:
这里写图片描述
根据执行计划可以看出此sql已经走了索引,且扫描行数只有100行,执行时间变短。
这里写图片描述

在查询第二页的时候
这里写图片描述
执行时间:
这里写图片描述

以此类推。

备注:
传统的认为枚举类的字段不适合加索引,如:男、女。其实可以根据各自的数据占比来确定是否需要加索引。当该类数据占总数据量的5%以下、或数据量小于2万行均可以走索引

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MySQL中,复制大数据量表有多种方式可以实现。以下是一些常见的方法: 1. 使用INSERT INTO SELECT语句: 这是最简单和常见的复制表的方法。您可以使用SELECT语句选择源表中的数据,并使用INSERT INTO语句将其插入到新表中。例如: ```sql INSERT INTO new_table SELECT * FROM old_table; ``` 这会将源表中的所有数据复制到新表中。 2. 使用CREATE TABLE和INSERT INTO语句: 如果您只想复制表结构而不包括数据,可以使用CREATE TABLE语句创建一个新表,并使用INSERT INTO语句插入数据。例如: ```sql CREATE TABLE new_table LIKE old_table; INSERT INTO new_table SELECT * FROM old_table; ``` 这将创建一个与源表结构相同的新表,并将源表的数据插入到新表中。 3. 使用mysqldump命令: mysqldump是一个MySQL提供的用于备份和还原数据库的命令行工具。您可以使用mysqldump导出源表的结构和数据,然后使用mysql命令将其导入到新表中。例如: ```shell mysqldump -u username -p database_name old_table > table_dump.sql mysql -u username -p database_name < table_dump.sql ``` 这将导出原表的结构和数据到table_dump.sql文件中,并将其导入到新表中。 4. 使用ALTER TABLE语句: 如果您只需要复制表结构,并且希望进行一些更改(例如增加或删除列),您可以使用ALTER TABLE语句。例如: ```sql CREATE TABLE new_table LIKE old_table; ALTER TABLE new_table ADD COLUMN new_column INT; ``` 这将创建一个与源表结构相同的新表,并在新表中添加一个新列。 请根据您的需求选择适合的方法来复制大数据量表。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MySQL中表的复制以及大型数据表的备份教程](https://blog.csdn.net/weixin_32498321/article/details/113235475)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [MySQL大表处理方式、快速复制表结构和数据的方式](https://blog.csdn.net/user2025/article/details/115432905)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [Mysql提升大数据表拷贝效率的解决方案](https://download.csdn.net/download/weixin_38635996/13699427)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值