百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

这些基本常用sql集锦你还不知道

toyiye 2024-06-21 12:35 10 浏览 0 评论

SQL语句不仅会写,还要高质量!

1,要养成用 explain 分析写的 SQL的习惯,尤其关注走不走索引:explain select * from AAA where id =10 or age =18;

2,查看表结构:show create table AAA;

3,为表添加分区:alter table AAA add partition(parttion P_AAA_20200329 values less than(20200329) ENGINE =InnoDB);

需要注意分区只能往后加,如果你加到2019年,那是会报错的。

4,查询 SQL 尽量不要使用 select *(所有字段,系统内存消耗大),而是 select 具体字段,节省资源、减少网络开销。

5,如果知道查询结果只有一条或者只要最大/最小一条记录,建议用 limit 1,找到对应一条记录,就不会继续向下扫描,效率提高。

6,应尽量避免在 where 子句中使用 or 来连接条件,MySQL 优化器,遇到 or 条件,索引可能失效。

7,like 很可能让索引失效。看好%位置。

8,索引列上使用内置函数,索引可能失效。

9,避免在 where 子句中对字段进行表达式操作,导致索引可能失效。

10,Inner join 、left join、right join,优先使用 Inner join,如果是 left join,左边结果尽量小。Inner join 内连接,在两张表进行连接查询时,只保留两张表中完全匹配的结果集。left join 在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。right join 在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。

11,应尽量不要在 where 子句中使用!=或<>操作符,可能会让索引失效

12, where 及 order by 涉及的列尽量选择主键索引

13,慎用 distinct 关键字,因为查询很多字段时,使用 distinct,引擎对数据进行比较,过滤掉重复数据,这个比较、过滤的过程会占用系统资源,CPU 。

14,一次删除大量数据,可能会有 lock wait timeout exceed 的错误,建议分批操作。

15,不要有超过 5 个以上的表连接,连表越多,编译时间和开销也就越大。把连接表拆开成较小的几个执行,可读性更高。

16,数据库最费劲的就是跟程序链接释放。假设链接了两次,每次做上百万次的数据集查询,查完就走,这样就只做了两次;相反建立了上百万次链接,申请链接释放反复重复,这样系统就受不了了。 MySQL 优化原则,就是小表驱动大表,小的数据集驱动大的数据集,从而让性能更优。最外层循环小的,适合使用 in,否则适合选择 exist。

17,检索结果中不会有重复的记录,推荐 union all 替换 union。

18,索引不宜太多,一般 5 个以内,索引并不是越多越好,索引虽然提高了查询的效率,但是也降低了插入和更新的效率。

19,尽量使用数字型字段,若只含数值信息的字段尽量不要设计为字符型,相对于数字型字段,字符型会降低查询和连接的性能,并会增加存储开销。

20,索引不应建在有大量重复数据的字段上,如性别这类型数据库字段,MySQL 查询优化器推算发现不走索引的成本更低,很可能就放弃索引了。

21,尽量避免向客户端返回过多数据量,尽量减小结果集,否则可能系统变慢。

22,多表关联时,使用表的别名,并把别名前缀于每一列上,这样语义更加清晰:select A.name,B.deptName from A member inner join B deptment on A.deptId = B.deptId;

23,为了提高 group by 语句的效率,可以在执行到该语句前,把不需要的记录过滤掉,having中的条件可以移到where条件中。

24,字段类型是字符串,where要用引号括起来,即使知道是数字,否则索引失效,类型不匹配,MySQL 会做隐式的类型转换,把它们转换为浮点数再做比较。反例:select * from AAA where id =123;正例:select * from AAA where id ='123';

每天强制自己写些东西,拍摄制作视频,记录生活,思考探索学习一些东西。不断地学习,坚持下去,提高自己的认知,打开自己的思维,以后会有更多的方法和创新。

版权归作者老有理所有,未经作者允许不得转载本文内容,否则将视为侵权;转载或者引用本文内容请注明来源及原作者;对于不遵守此声明或者其他违法使用本文内容者,本人依法保留追究权。欢迎大家对内容给予批评指正,请在下面留言,我会一一回答,谢谢大家的支持关照。认可的点赞支持!喜欢的话就点击关注!!

相关推荐

为何越来越多的编程语言使用JSON(为什么编程)

JSON是JavascriptObjectNotation的缩写,意思是Javascript对象表示法,是一种易于人类阅读和对编程友好的文本数据传递方法,是JavaScript语言规范定义的一个子...

何时在数据库中使用 JSON(数据库用json格式存储)

在本文中,您将了解何时应考虑将JSON数据类型添加到表中以及何时应避免使用它们。每天?分享?最新?软件?开发?,Devops,敏捷?,测试?以及?项目?管理?最新?,最热门?的?文章?,每天?花?...

MySQL 从零开始:05 数据类型(mysql数据类型有哪些,并举例)

前面的讲解中已经接触到了表的创建,表的创建是对字段的声明,比如:上述语句声明了字段的名称、类型、所占空间、默认值和是否可以为空等信息。其中的int、varchar、char和decimal都...

JSON对象花样进阶(json格式对象)

一、引言在现代Web开发中,JSON(JavaScriptObjectNotation)已经成为数据交换的标准格式。无论是从前端向后端发送数据,还是从后端接收数据,JSON都是不可或缺的一部分。...

深入理解 JSON 和 Form-data(json和formdata提交区别)

在讨论现代网络开发与API设计的语境下,理解客户端和服务器间如何有效且可靠地交换数据变得尤为关键。这里,特别值得关注的是两种主流数据格式:...

JSON 语法(json 语法 priority)

JSON语法是JavaScript语法的子集。JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔花括号保存对象方括号保存数组JS...

JSON语法详解(json的语法规则)

JSON语法规则JSON语法是JavaScript对象表示法语法的子集。数据在名称/值对中数据由逗号分隔大括号保存对象中括号保存数组注意:json的key是字符串,且必须是双引号,不能是单引号...

MySQL JSON数据类型操作(mysql的json)

概述mysql自5.7.8版本开始,就支持了json结构的数据存储和查询,这表明了mysql也在不断的学习和增加nosql数据库的有点。但mysql毕竟是关系型数据库,在处理json这种非结构化的数据...

JSON的数据模式(json数据格式示例)

像XML模式一样,JSON数据格式也有Schema,这是一个基于JSON格式的规范。JSON模式也以JSON格式编写。它用于验证JSON数据。JSON模式示例以下代码显示了基本的JSON模式。{"...

前端学习——JSON格式详解(后端json格式)

JSON(JavaScriptObjectNotation)是一种轻量级的数据交换格式。易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScriptProgrammingLa...

什么是 JSON:详解 JSON 及其优势(什么叫json)

现在程序员还有谁不知道JSON吗?无论对于前端还是后端,JSON都是一种常见的数据格式。那么JSON到底是什么呢?JSON的定义...

PostgreSQL JSON 类型:处理结构化数据

PostgreSQL提供JSON类型,以存储结构化数据。JSON是一种开放的数据格式,可用于存储各种类型的值。什么是JSON类型?JSON类型表示JSON(JavaScriptO...

JavaScript:JSON、三种包装类(javascript 包)

JOSN:我们希望可以将一个对象在不同的语言中进行传递,以达到通信的目的,最佳方式就是将一个对象转换为字符串的形式JSON(JavaScriptObjectNotation)-JS的对象表示法...

Python数据分析 只要1分钟 教你玩转JSON 全程干货

Json简介:Json,全名JavaScriptObjectNotation,JSON(JavaScriptObjectNotation(记号、标记))是一种轻量级的数据交换格式。它基于J...

比较一下JSON与XML两种数据格式?(json和xml哪个好)

JSON(JavaScriptObjectNotation)和XML(eXtensibleMarkupLanguage)是在日常开发中比较常用的两种数据格式,它们主要的作用就是用来进行数据的传...

取消回复欢迎 发表评论:

请填写验证码