mysql limit 用法

来源:互联网 发布:三维设计软件培训 编辑:程序博客网 时间:2024/06/05 07:30
取前5条数据
[sql] view plaincopy
  1. select * from table_name limit 0,5  

[sql] view plaincopy
  1. select * from table_name limit 5  

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

[sql] view plaincopy
  1. 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 '%中文%' 即可避免出现错误。

0 0
原创粉丝点击