select语句没有where条件,limit慢咋办?

Select * from table limit 10慢了,表有100万条数据,没有where条件,就是慢了,如何优化

  • 以sbtest1表为例,100万数据
    select from sbtest1 limit 10; 执行时间0.00sec
    select
    from sbtest1 limit 550000,10; 执行时间0.99 sec
    select * from sbtest1 limit 990000,10; 执行时间1.32 sec

  • 可以改写sql为:不是我吹,绝对,没的说,超级快
    select * from sbtest1 where id between 990001 and 990010;
  • 看看执行计划,我靠,才扫描10行,能不快吗?千万级表又算啥?
  • 将sbtest1表提升至1000w条数据

  • 随便输入两个数字,0.02 sec很快!再看看下面随便查100行的速度,也是超级快!

    虽然不知道实际有没有这么写,但是这种写法确实是我觉得目前最效率的。
  • 错误示范:
    网上有很多教这种写法:
    select from sbtest1 where id >= (select id from sbtest1 limit 990000,1) limit 10;
    大错特错,查出来的数据根本不一样,如下

    我试了试改良写法,虽然取的数据正确,但是跟没优化一样慢!!!
    select
    from sbtest1 where id >= (select id from sbtest1 order by id limit 990000,1) limit 10;
    上面标红的两个SQL不要用!!!

原文地址:http://blog.51cto.com/8370646/2150173

时间: 2024-11-09 03:08:56

select语句没有where条件,limit慢咋办?的相关文章

mysql 查询select语句汇总

数据准备: 创建表: create table students( id int unsigned primary key auto_increment not null, name varchar(20) default '', age tinyint unsigned default 0, height decimal(5,2), gender enum('男','女','人妖','保密'), cls_id int unsigned default 0, isdelete bit defau

mariadb的select语句

mariadb的查询流程图 select语句的从句分析顺序:from(过滤表)-->where(过滤行)-->group by(分组)-->having(分组过滤)-->order by(排序)-- >select(选取字段)-->limit(查询限制)-->最终结果 DISTINCT: 数据去重 SQL_CACHE: 显式指定存储查询结果于缓存之中 SQL_NO_CACHE: 显式查询结果不予缓存 show global variables like '%que

MySQL SELECT语句

说明:MySQL的offset第一行是0 位置指的是在SELECT语句中第几个出现的字段,如:1,则代表用第一个出现的字段来分组. SELECT语句: SELECT  select_expr1 [,select_expr2......] [ FROM  表名   [WHERE  where_condition]   [GROUP  BY  {列名|位置}  [ASC | DESC],.....]     //对查询结果进行分组,如:SELECT sex,id FROM tb1 GROUP BY

sql中select语句详解及用途

SELECT [ ALL | DISTINCT [ ON ( expression [, ...] ) ] ] * | expression [ AS output_name ] [, ...] [ FROM from_item [, ...] ] [ WHERE condition ] [ GROUP BY expression [, ...] ] [ HAVING condition [, ...] ] [ { UNION | INTERSECT | EXCEPT } [ ALL ] sel

MySQL之——10个select语句的简单用法

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47610159 本篇文章主要讲述的是MySQL SELECT句法的简单分析,我们大家都知道MySQL数据库是我们大家经常使用的数据库,其相关的应用也是备受关注的,那么以下的文章主要是对MySQL SELECT句法的简单分析. 1.select语句可以用回车分隔 $sql="select * from article where id=1" 和 $sql="sel

select语句执行的顺序,子查询和联合查询【这三点都是重点】

select (字段或表达式) (from 资源) where 1(用来先处理筛选后加条件) (AND条件附加)(group by)(order by)(limit); 1.group by分组[分组的作用在于分组统计上使用分组,每组正常只显示一条信息][基本都是用在分组统计方面,配合聚合函数进行处理] [这个重点] group_concat(函数):会将组内的元素进行拼接显示[这个能够显示分组后的组内的显示效果] 多字段分组[group by+多个字段并列即可] [分组字段的使用主要还是在统计

MySQL(五)SELECT语句执行顺序

上一篇讲述了Oracle的SELECT语法的执行顺序,这篇讲述MySQL的SELECT语法的执行顺序.MySQL的SELECT语法的执行顺序和Oracle的基本相同,只是增加了MySQL独有的LIMIT语法. 目录 一.SELECT语句的处理过程 1. FROM阶段 2. WHERE阶段 3. GROUP BY阶段 4. HAVING阶段 5. SELECT阶段 6. ORDER BY阶段 7. LIMIT阶段 一.SELECT语句的处理过程 查询操作是关系数据库中使用最为频繁的操作,也是构成其

SQL基础语法—select语句

1 select语句介绍 select语句是值从现存的一个或多个表中查看满足条件的数据,其基本语法如下: Syntax: SELECT [ALL | DISTINCT | DISTINCTROW ] [HIGH_PRIORITY] [STRAIGHT_JOIN] [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] select_expr [

MySQL: select 语句

1. order by (排序) 通常使用一个字段作为参考标准,进行排序. 语法:order by [字段] asc|desc;(升序.降序) tip : 校对规则 决定 排序关系. 允许多字段排序(先按第一个字段排序,当出现不能区分的时候,按第二个字段进行排序,依此类推). [举个栗子] 对于下表,输入select * from tb_name; 时,会按照输入顺序依次显示表中的数据: 当需要对表中数据按照字段 stu_score 进行降序排列时,在输入语句后加上order by stu_sc