博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java编程思想 数据库SQL语句的 优化总结
阅读量:7196 次
发布时间:2019-06-29

本文共 1020 字,大约阅读时间需要 3 分钟。

数据库是开发过程中必须要有的,正是由于数据库的使用率是100%,所以会有各种各样的关于数据库的优化,拆分等等一系列的问题。

今天笔者就以自己多年的经验给大家介绍一下,权当抛砖引玉,请大家不喜勿喷,评论还是可以的,关注我就更好了

负向查询不能使用索引

select name from user where id not in (1,3,4);

应该修改为:

select name from user where id in (2,5,6);

前导模糊查询不能使用索引

如:

select name from user where name like '%zhangsan'

非前导则可以:

select name from user where name like 'zhangsan%'

建议可以考虑使用 Lucene 等全文索引工具来代替频繁的模糊查询。

数据区分不明显的不建议创建索引

如 user 表中的性别字段,可以明显区分的才建议创建索引,如身份证等字段。

字段的默认值不要为 null

这样会带来和预期不一致的查询结果。

在字段上进行计算不能命中索引

select name from user where FROM_UNIXTIME(create_time) < CURDATE();

应该修改为:

select name from user where create_time < FROM_UNIXTIME(CURDATE());

最左前缀问题

如果给 user 表中的 username pwd 字段创建了复合索引那么使用以下SQL 都是可以命中索引:

但是使用

select username from user where pwd ='axsedf1sd'

是不能命中索引的。

如果明确知道只有一条记录返回

select name from user where username='zhangsan' limit 1

可以提高效率,可以让数据库停止游标移动。

不要让数据库帮我们做强制类型转换

select name from user where telno=18722222222

这样虽然可以查出数据,但是会导致全表扫描。

需要修改为

select name from user where telno='18722222222'

如果需要进行 join 的字段两表的字段类型要相同

不然也不会命中索引。

转载地址:http://ymzum.baihongyu.com/

你可能感兴趣的文章
iOS手势识别的详细使用(拖动,缩放,旋转,点击,手势依赖,自定义手势)
查看>>
实现JSON在线美化(格式化)、JSON转CSV、CSV转XML工具-toolfk程序员工具网
查看>>
Combine Two Tables[leetcode]
查看>>
Linux环境变量
查看>>
Python2 进程扫描脚本
查看>>
JQuery EasyUI 日期控件如何控制日期选择区间
查看>>
scrapy ImportError: No module named items
查看>>
jboss7.1.1配置jndi
查看>>
Jsoup解析html
查看>>
JSP+ajax+springMVC+MayBatis处理excel上传导入
查看>>
eclipse maven 配置遇到的问题
查看>>
JSP里request变量列表
查看>>
#python#面向对象练手+模仿Amazon的物流追踪显示
查看>>
器者,道之所载
查看>>
pch头文件出现的问题
查看>>
phpstudy本地环境开启.htaccess伪静态
查看>>
谁能告诉我mybatis中使用#和$的区别?
查看>>
GCD死锁
查看>>
JVM
查看>>
通过创建一个简单的骰子游戏来探究 Python
查看>>