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. 使用Mybatis连接数据库时报错:org.apache.ibatis.exceptions.PersistenceException: ### Error updating database.

    我的原因是字段名写错了,去数据库中复制字段名再运行就成功了.

  2. 智课雅思词汇---二十五、形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y

    智课雅思词汇---二十五.形容词后缀-ate-fic-ose-ulent-olent-ous-ulous-y 一.总结 一句话总结: 1.形容词后缀-ate(determinate)? determi ...

  3. 在Windows下MyEclipse运行JAVA程序连接HBASE读取数据出错

    运行环境:Hadoop-2.5.0+Hbase-0.98.6 问题描述: 15/06/11 15:35:50 ERROR Shell: Failed to locate the winutils bi ...

  4. java 下载文件的两种方式和java文件的上传

    一:以网络的方式下载文件 try { // path是指欲下载的文件的路径. File file = new File(path); // 以流的形式下载文件. InputStream fis = n ...

  5. poj 1787 背包+记录路径

    http://poj.org/problem?id=1787 Charlie's Change Time Limit: 1000MS   Memory Limit: 30000K Total Subm ...

  6. poscms仿站知识点总结(一)

    最近在做基于poscms系统的企业站仿站项目,这个系列用于总结项目中遇到的一些前端问题,至于poscms,待我摸透之后再总结... 进入正题吧,仿站,首先是用仿站小工具把要仿的模板站扒下来,有时候会出 ...

  7. [置顶] Android RadioButton与TextView浪漫约会?

    情景一 今天主要实现一个国家与地区切换,就是当我们选中RadioButton时然后将值设置到TextView中,听着这需求应该不难对吧?那么我们就开始约会吧? 看下原型图 准备条件: 首先需要一个ra ...

  8. OpenCV中阈值(threshold)函数: threshold 。

    OpenCV中提供了阈值(threshold)函数: threshold . 这个函数有5种阈值化类型,在接下来的章节中将会具体介绍. 为了解释阈值分割的过程,我们来看一个简单有关像素灰度的图片,该图 ...

  9. linux 段错误常见处理方法

    1.如果没有产生core文件,可以查询系统log 通过 sudo cat /var/log/messages |grep segfault 或者 sudo dmesg|grep segfault 获得 ...

  10. 使用Kali Linux执行中间人攻击(演示)

    中间人攻击也叫Man-In-The-Middle-Attack. 我假设你已经知道中间人攻击的基本概念,引用一段wikipedia: 中间人攻击(Man-in-the-middle attack,缩写 ...