暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
SQL优化20招.pdf
206
12页
2次
2022-12-02
25墨值下载
一、查询SQL尽量不要使用select *,而是具体字段
1
、反例
SELECT * FROM user
2
、正例
SELECT id,username,tel FROM user
3
、理由
1. 节省资源、减少网络开销。
2. 可能用到覆盖索引,减少回表,提高查询效率。
注意:为节省时间,下面的样例字段都用
*
代替了。
二、避免在
where
子句中使用
or
来连接条件
1
、反例
SELECT * FROM user WHERE id=1 OR salary=5000
2
、正例
1
)使用
union all
SELECT * FROM user WHERE id=1
UNION ALL
SELECT * FROM user WHERE salary=5000
2
)分开两条
sql
SELECT * FROM user WHERE id=1
SELECT * FROM user WHERE salary=5000
3
、理由
1. 使用 or 可能会使索引失效,从而全表扫描;
2. 对于 or 没有索引的 salary 这种情况,假设它走了 id 的索引,但是走到 salary 查询条件时,它还
得全表扫描;
3. 也就是说整个过程需要三步:全表扫描+索引扫描+合并。如果它一开始就走全表扫描,直接一遍扫
描就搞定;
4. 虽然
mysql 是有优化器的,出于效率与成本考虑,遇到 or 条件,索引还是可能失效的;
三、尽量使用数值替代字符串类型
1
、正例
1. 主键(id): primary key 优先使用数值类型 int tinyint
2. 性别(sex):0代表女,1代表男;数据库没有布尔类型, mysql 推荐使用 tinyint
2
、理由
1. 因为引擎在处理查询和连接时会逐个比较字符串中每一个字符;
2. 而对于数字型而言只需要比较一次就够了;
3. 字符会降低查询和连接的性能,并会增加存储开销;
四、使用
varchar
代替
char
1
、反例
`address` char(100) DEFAULT NULL COMMENT '地址'
2
、正例
`address` varchar(100) DEFAULT NULL COMMENT '地址'
of 12
25墨值下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

关注
最新上传
暂无内容,敬请期待...
下载排行榜
Top250 周榜 月榜