
mysql 没有top的用法。取而代之的是limit
语法为:limit m,n
省略n就可以得到你要的效果了。
select * from table1 limit 10
SELECT * FROM category LIMIT 3, 5
LIMIT 3, 5 这一句是关键3代表第几条数据之后开始,5代表差出几条结束(这里以mysql中的category表)
显示10条:
SELECT * FROM category LIMIT 0,10
或者
SELECT * FROM category LIMIT 10
(1)查询表中全部信息:
select * from 表名
(2)查询表中指定列的信息:
select 列1,列2 from 表名
(3)去重:
select distinct 列... from 表名
(4)拼接结果:
select concat(列1,列2) from 表名
(5)设置别名(注意:关键字as可以省略)
select 列 as 别名 from 表名
select 列 别名 from 表名
(6)条件查询:
select 列... from 表名 where 条件
条件中比较运算符:(等于:= 大于:> 大于等于:>= 小于:< 小于等于:<= 不等于:!= 或 <>)
(7)where 列 比较运算符 值
注意:字符串、日期需使用单引号括起来
(8)逻辑运算符(并且:and或&& 或:or 非:not或!)
where 条件1 逻辑运算符 条件2
where not 条件
(9)范围查询:
where 列 between 条件1 and 条件2 //列在这个区间的值where 列 not between 条件1 and 条件2 //不在这个区间where !( 列 between 条件1 and 条件2 ) //同样表示不在这个区间
集合查询(判断列的值是否在指定的集合中):
where 列 in(值1,值2) //列中的数据是in后的值里面的where 列 not in(值1,值2) //不是in中指定值的数据
null值查询(注意:列中值为null不能使用=去查询):
where 列 is null //查询列中值为null的数据
资料来源 网页链接
臆测一下,十倍。为什么说是臆测呢,因为我猜这并不是问很极端的情况。
详细说来,拆解每个查询消耗的时间,并不是每个步骤都与行数有关。
查1行,查10行,网络通讯都是占大部分时间,所以是10倍。
但是,如果你一次查10w行,并不会比10w次1行快10w倍,因为大数据量查询本来就慢。
延伸一下,以前我们做过一个优化,又来用这个case连续讲了4-5年。
这是一个UPDATE table SET col = col + N WHERE key = ?的查询,大概有5k QPS左右,跑不动。
改成了UPDATE table SET col = col + 1 WHERE key IN (?, ?, ?..... )的样子,数据库CPU从40%降到1%。
这个改变没有改变任何索引使用和网络传输,是不常见的,解析SQL瓶颈。
写这个例子,是要说,优化要根据具体情况分析,数据量和使用情况都会影响结论。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)