您的位置:首页 > 数据库 > MySQL

mysql limit 用法

2015-12-29 12:01 519 查看
取前5条数据

[sql] view
plaincopy

select * from table_name limit 0,5



[sql] view
plaincopy

select * from table_name limit 5

取第11条到第15条数据,共5条

[sql] view
plaincopy

select * from table_name limit 10,5

limit关键字的用法:

LIMIT [offset,] rows

offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。

mysql
limit分页查询效率

对于有大数据量的mysql表来说,使用LIMIT分页存在很严重的性能问题。

查询从第1000000之后的30条记录:

SQL代码1:平均用时6.6秒 SELECT * FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 30

SQL代码2:平均用时0.6秒 SELECT * FROM `cdb_posts` WHERE pid >= (SELECT pid FROM `cdb_posts` ORDER BY pid LIMIT 1000000 , 1) LIMIT 30

因为要取出所有字段内容,第一种需要跨越大量数据块并取出,而第二种基本通过直接根据索引字段定位后,才取出相应内容,效率自然大大提升。

可以看出,越往后分页,LIMIT语句的偏移量就会越大,两者速度差距也会越明显。

实际应用中,可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。
mysql 模糊查询问题:

在 MySQL 5.5 以上, 若字段 Type 是 time,date,datetime 在 select 時若使用 like '%中文%' 会出現 Illegal mix of collations for operation 'like'在写程序时要对每个字段进行搜索,在执行时可能就会出现时间字段 like '%中文%' 这种语法,这在比较久的版本MySQL是不会出现错误的。但是升级到MySQL 5.5以上,必需改成like binary
'%中文%' 即可避免出现错误。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: