专业网站建设品牌,十四年专业建站经验,服务6000+客户--广州京杭网络
免费热线:400-683-0016      微信咨询  |  联系我们

关于SQL有什么技巧分享_数据库

当前位置:网站建设 > 技术支持
资料来源:网络整理       时间:2023/3/5 17:28:21       共计:3608 浏览

关于SQL有什么技巧分享?

通常我们的SQL都是写在代码中的,执行一次SQL需要经历网络传输、SQL的执行、如果是查询操作,会有查询结果返回,再每一个步骤中,都需要注意效率问题。(第二部分会着重说SQL的一些经验)

减少数据访问(减少磁盘访问) :使用索引;

返回更少数据(减少网络传输或磁盘访问) :数据分页处理、只返回需要的字段;

减少交互次数(减少网络传输) :批量执行、使用存储过程;

减少服务器CPU开销(减少CPU及内存开销):使用绑定变量、合理使用排序、减少比较操作、大量复杂运算在客户端处理;

利用更多资源(增加资源)。

既然题目中问到了SQL,还是主要说一下SQL的一些技巧,主要是索引的使用。

B-Tree索引:说到数据库的索引,大多数时候都是指B-Tree索引,B-Tree索引适用于全键值、范围、前缀的查找;主键、外键必须有索引,当然很多系统都是逻辑外键(或需要经常和其他表关联),也需要建立索引;经常出现在where、order by、group by中的字段;尽量把索引建立到小字段上;对于文本字段或者很长字段,不要建索引;

联合索引:也是B-Tree索引,这里单独拿出来强调一下【联合索引的最左原则】,如果不是按索引的最左列查找,那么将无法使用索引。最左原则:如果创建了一个联合索引(name,age,gender),相当于创建了三个索引(name)、(name,age)、(name,age,gender)。联合索引,左边的列有范围查找,那么右边的列无法使用索引。比如index(age,gender),where age > 20 and gender = 'M';这时候就会有问题。解决办法也很简单,两个字段分别建立索引。

哈希索引:是基于哈希表,精确匹配索引所有列的查询才有效;

全文索引、聚簇索引、聚簇索引等等,就不详细说了,因为...我也不太会,几乎没有用过。

索引的一些小技巧

前导模糊查询,会导致索引失效:where name like '%XX';

数据区分度不大,不建议使用索引:where gender = 'M';性别只有男、女、未知三种;

等号左边有函数,会索引失效:where LENGTH(col1) = 10;

隐式转换的问题:where col2 = '100',col2列是数字,等号左右类型不一致,col2会隐式转换成字符串;

尽量不好使用负向查询,例如:!=、not in、not exists;

单列索引不存null值,复合索引不存全为null的值(索引列尽量使用not null的约束并设置默认值);

索引不是越多越好。

我将持续分享Java开发、架构设计、程序员职业发展等方面的见解,希望能得到你的关注。

版权说明:
本网站凡注明“广州京杭 原创”的皆为本站原创文章,如需转载请注明出处!
本网转载皆注明出处,遵循行业规范,如发现作品内容版权或其它问题的,请与我们联系处理!
欢迎扫描右侧微信二维码与我们联系。
·上一条:oracle建索引会锁表吗_数据库 | ·下一条:mysql 查询 时间戳,MySQL如何按时间统计数据_数据库

Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有    粤ICP备16019765号 

广州京杭网络科技有限公司 版权所有