一.优化
1.数据表联查优化
1.先执行where过滤,再联查;
2.合适的组合索引,
3.字段值:
1)尽量使用数字类型
2)设置默认值,避免where使用字段 = null;
4.慎用某些关键字/字符(in,!=,*),适当使用exists/not exists;
2.limit的优化
普通:
SELECT * FROM table1 WHERE `key` >1000000 LIMIT 100000,5;
内联 :a表内联-临时表(使用a表 limit得出的结果集)
SELECT * FROM table1 a
INNER JOIN (SELECT `key` AS id FROM table1 WHERE `key` >1000000 LIMIT 100000,5 ) b ON a.`key` = b .id;
3.排序优化:
1)尽量使用索引的正序排序,不单独使用order by
2)使用索引排序时:组合索引-结合where字段的索引和排序字段索引
二.查询结果集排序的序号
SELECT @rank:=@rank + 1 AS rank_no //@rank 临时变量, @rank:=@rank + 1 初始值+1
FROM
(SELECT 表字段 FROM 表名 ORDER BY `key` DESC ) a, //结果集排序
(SELECT @rank:= 0) b//临时变量初始值
三.其他
1.指定一个自增主键的初始值
alter table tbname auto_increment = x;
2.lpad((str,len,padstr))
用字符串 padstr对 str进行左边填补直至它的长度达到 len个字符长度,然后返回str,如果str的长度长于len,那么它将被截除到len个字符;
3.给定一个日期,返回一个天数
TO_DAYS(date)
4.判断某个字段的值是否包含指定的字符串
INSTR(filed,字符串)
5.replace into : 已有此行数据(根据主键或者唯一索引判断)替换
6.java项目中mysql jar包升级6.0 后需修改数据源配置
1.
2.url 多加时区配置 serverTimezone=GMT%2B8
Aron锅
发布了21 篇原创文章 · 获赞 10 · 访问量 3万+
私信
关注
标签:rank,查询,索引,len,key,Mysql,排序,SELECT
来源: https://blog.csdn.net/weixin_37794901/article/details/104058627