MySQL.分页 & 慢日志查询
limit分页
select * from table_name limit 0,5 或者 select * from table_name limit 5 #取前5条数据
select * from table_name limit 10,5 #查询第11到15条数据
limit关键字用法
limit [offset,] rows #offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0而不是1
select * from table_name where 条件limit 当前页码*页面容量-1,页面容量
6种MySQL分页总结:
1.直接使用数据库的SQL语句 select * from 表名称 limit M,N
2.建立主键或唯一索引,利用索引(假设没有10条) select * from 表名称 where id_pk(pagenum * 10)limit M
3.基于索引再排序 select * from 表名称 where id_pk>(pagenum * 10)order by id_pk asc limit M
4.基于索引使用prepare
(第一个?表示pagenum,第二个?表示每页元组数) prepare stmt_name from selcte * from 表名称 where id_pk>(?*?)order by id_pk asc limit M
5.利用MySQL支持order操作可以利用索引快速定位部
分元组,避免全盘扫描 select * from your_table where pk>=1000 order by pk asc limit 0,20 #读第1000到1019行元组(pk是主键/唯一健)
6.利用“子查询/连接+索引”快速定位元组的位置,然后再读取元组
利用子查询示例:
select * from your_table where id<=(select id from your_table order by id desc limit ($page-1)*$pagesize order by id desc limit $pagesize)
利用连接示例:
select * from your_table ASt1 join (select id from your_table order by id desc limit ($page-1)* $pagesize ASt2 ) where t1.id <=t2.id order by t1.id desc limit $ pagesize;
慢日志查询:
1.slow_query_log=OFF #是否开启慢日志记录
2.long_query_time=2 #时间限制,超过此时间,则记录
3.slow_query_log_file=usr/low/slow.log #日志文件
4.log_queseris_not_indexds=OFF #为使用索引的搜索是否记录
注:查看当前配置信息
show variables like '%query%'
修改当前配置
get global 变量名=值
查看MySQL慢日志:
mysql dump slow -s at -t / usr / local /var/ mysql / Mac book-pro-3-slow.log
1.verbose 版本
2.debug 调试
3.help 帮助
4. -v 版本
5. -d 调试模式
6. -s order 排序方式
7. what to sort by (al ,at ,ar ,c , l, r, t),“at” is default #al: average lock time ar: average rows sent at:average query time
c: count l: lock time r: rows sent t:query time
8. -r 反转顺序,默认文件倒叙排
9. -t NUM 显示前n条
10. -a不要将SQL语句中数字转换成N,字符串转换为S
11. -n NUM
12. -g pattern 正则匹配
13. -h hostname MySQL机器名或者ip
14. -i name
15. -1 总时间中不减去锁定时间