mysql的表test中有20105119行数据。
建立索引:data_status,place_cargo_status

场景1:

SELECT
id,
resource_id,
resource_type,
...
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',arrive_work_day,send_work_day,1,cargo_arrive_time),
load_zone_code,
cargo_send_batch,
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',send_work_day,send_work_day,2,cargo_arrive_time),
cargo_arrive_next_batch,
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',send_work_day,arrive_next_work_day,3,cargo_arrive_time),
next_zone_code,
...
FROM
test
WHERE
data_status=1 and place_cargo_status=1
LIMIT 0,10000

结果:查询时间为:7.360s

场景1:

SELECT
id,
resource_id,
...
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',arrive_work_day,send_work_day,1,cargo_arrive_time),
load_zone_code,
cargo_send_batch,
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',send_work_day,send_work_day,2,cargo_arrive_time),
cargo_arrive_next_batch,
F_OMCS_LINK_GET_DAY_BY_WORKDAY('2017-03-13',send_work_day,arrive_next_work_day,3,cargo_arrive_time),
...
FROM
test
WHERE
data_status=1
LIMIT 0,10000

结果:查询时间为:7.111s

场景三:

select * from test
WHERE
data_status=1 and place_cargo_status=1
LIMIT 0,10000

结果:查询时间为0.141s
场景四:

select * from test
WHERE
data_status=1
LIMIT 0,10000

查询时间为0.140s

查看执行计划:

场景四的执行计划:

优化一:

如上type=all,是因为data_status是varchar型的,为其加单引号后,如下:

优化二:使用主键翻页,

测试结果如下:

select * from tt_lk_place_cargo where data_status='' and id between  20000000 and 20030000;

结果:使用时间0.381s

mysql实战优化之二:limit优化(大表翻页查询时) sql优化的更多相关文章

  1. MySQL大数据量分页查询方法及其优化

    MySQL大数据量分页查询方法及其优化   ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适 ...

  2. 如何对MySQL 对于大表(千万级)进行优化

    如何对Mysql中的大型表进行优化 @(mysql 笔记) 收集信息 1.数据的容量:1-3年内会大概多少条数据,每条数据大概多少字节: 2.数据项:是否有大字段,那些字段的值是否经常被更新: 3.数 ...

  3. 1. 元信息:Meta类 2. 基于对象查询的sql优化 3. 自定义:Group_Concat() 4. ajax前后台交互

    一.元信息 ''' 1. 元信息 1. Model类可以通过元信息类设置索引和排序信息 2. 元信息是在Model类中定义一个Meta子类 class Meta: # 自定义表名 db_table = ...

  4. SQL查询与SQL优化[姊妹篇.第四弹]

    在上一篇文章中,我们一起了解了关系模型与关系运算相关的知识,接下来我们一起谈谈,面对复杂的关系数据,我们如何来优化,SQL如何玩转更优呢? 在上一篇中抛出了4个关于优化方面的问题: 1.返回表中0.0 ...

  5. 【1】MySQL大数据量分页查询方法及其优化

    ---方法1: 直接使用数据库提供的SQL语句---语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N---适应场景: 适用于数据量较少的情况(元组百/千 ...

  6. 大数据量高并发访问SQL优化方法

    保证在实现功能的基础上,尽量减少对数据库的访问次数:通过搜索参数,尽量减少对表的访问行数,最小化结果集,从而减轻网络负担:能够分开的操作尽量分开处理,提高每次的响应速度:在数据窗口使用SQL时,尽量把 ...

  7. Oracle 表三种连接方式(sql优化)

    在查看sql执行计划时,我们会发现表的连接方式有多种,本文对表的连接方式进行介绍以便更好看懂执行计划和理解sql执行原理. 一.连接方式: 嵌套循环(Nested Loops (NL)) (散列)哈希 ...

  8. SQL夯实基础(四):子查询及sql优化案例

    首先我们先明确一下sql语句的执行顺序,如下有前至后执行: (1)from  (2) on   (3) join  (4) where  (5)group by  (6) avg,sum...  (7 ...

  9. Delete 语句带有子查询的sql优化

    背景: 接到开发通知,应用页面打不开,让我协助... (开发跟我说,表GV_BOOKS一直有锁,锁了有1个多小时了,问我能不能把锁释放掉,我回答他们说,这肯定是sql性能问题,表上有锁是正常现象,不是 ...

随机推荐

  1. Count and Say,统计并输出,利用递归,和斐波那契数列原理一样。

    问题描述:n=1,返回“1”:n=2,返回“11”:n=3,返回“21”:n=4,返回1211,.... 算法分析:和斐波那契数列道理差不多,都是后一个要依赖前一个元素.因此可以使用递归,也可以使用迭 ...

  2. java-二维数组——with 刘童格

    #include<iostream> #include<string> using namespace std; void MaxIntArray(int a[],int &a ...

  3. 【第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛-L】用来作弊的药水

    链接:https://www.nowcoder.com/acm/contest/90/L来源:牛客网 输入x,a,y,b,(1<=x,a,y,b<=10^9)判断x^a是否等于y^b 前面 ...

  4. 【专题】区间dp

    1.[nyoj737]石子合并 传送门:点击打开链接 描述    有N堆石子排成一排,每堆石子有一定的数量.现要将N堆石子并成为一堆.合并的过程只能每次将相邻的两堆石子堆成一堆,每次合并花费的代价为这 ...

  5. mongodb倒排索引

    这周主要都花时间搞mongodb上了,业务场景是上游产出几个城市的全量道路code值,每个城市的数据量大概在100w~200w之间,每条数据对应好几个feature,形如: { code: 0, fe ...

  6. 获取整个页面HTML的信息以及注意事项

    两种方式: 1.从每个节点获取 var a = '<!DOCTYPE html><html lang="zh-cn">'; var z = "&l ...

  7. LeetCode OJ:Find Peak Element(寻找峰值元素)

    A peak element is an element that is greater than its neighbors. Given an input array where num[i] ≠ ...

  8. 版本工具管理之----git

    如何查看隐藏文件夹: 如果你看不到.git目录,你需要让隐藏的文件可见.具体做法就是打开一个Terminal窗口,输入以下命令: defaults write com.apple.finder App ...

  9. canvas操作图片,进行面板画图,旋转等

    HTML5 <canvas> 标签用于绘制图像(通过脚本,通常是 JavaScript). 不过,<canvas> 元素本身并没有绘制能力(它仅仅是图形的容器) - 您必须使用 ...

  10. react:reducer-creator

    function createReducer(initialState, handlers) { return function reducer(state = initialState, actio ...