除了不要 SELECT * ,数据库还有哪些技巧


来源:AIOps

应用程序慢如牛,原因多多,可能是网络的原因、可能是系统架构的原因,还有可能是数据库的原因。

那么如何提高数据库SQL语句执行速度呢?有人会说性能调优是数据库管理员(DBA)的事,然而性能调优跟程序员们也有莫大的关系。

程序中嵌入的一行行的SQL语句,如果使用了一些优化小技巧,定能达到事半功倍的效果。

技巧1  比较运算符能用 “=”就不用“<>”

“=”增加了索引的使用几率。

技巧2  明知只有一条查询结果,那请使用 “LIMIT 1”

“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。

技巧3  为列选择合适的数据类型

能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你懂的,磁盘和内存消耗越小越好嘛。

技巧4  将大的DELETE,UPDATE or INSERT 查询变成多个小查询

能写一个几十行、几百行的SQL语句是不是显得逼格很高?然而,为了达到更好的性能以及更好的数据控制,你可以将他们变成多个小查询。

技巧5  使用UNION ALL 代替 UNION,如果结果集允许重复的话

因为 UNION ALL 不去重,效率高于 UNION。

技巧6  为获得相同结果集的多次执行,请保持SQL语句前后一致

这样做的目的是为了充分利用查询缓冲。

比如根据地域和产品id查询产品价格,第一次使用了:

那么第二次同样的查询,请保持以上语句的一致性,比如不要将where语句里面的id和region位置调换顺序。

技巧7  尽量避免使用 “SELECT *”

如果不查询表中所有的列,尽量避免使用 SELECT *,因为它会进行全表扫描,不能有效利用索引,增大了数据库服务器的负担,以及它与应用程序客户端之间的网络IO开销。

技巧8  WHERE 子句里面的列尽量被索引

只是“尽量”哦,并不是说所有的列。因地制宜,根据实际情况进行调整,因为有时索引太多也会降低性能。

技巧9  JOIN 子句里面的列尽量被索引

同样只是“尽量”哦,并不是说所有的列。

技巧10  ORDER BY 的列尽量被索引

ORDER BY的列如果被索引,性能也会更好。

技巧11  使用 LIMIT 实现分页逻辑

不仅提高了性能,同时减少了不必要的数据库和应用间的网络传输。

技巧12  使用 EXPLAIN 关键字去查看执行计划

EXPLAIN 可以检查索引使用情况以及扫描的行。

其他

SQL调优方法有很多种,同样的查询结果可以有很多种不同的查询方式。其实最好的方法就是在开发环境中用最贴近真实的数据集和硬件环境进行测试,然后再发布到生产环境中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 数据库考研复试常考的知识点主要包括以下几个方面: 1. 数据库系统基础知识:包括数据库的概念、结构、组成部分、数据模型和数据库管理系统的基本功能。 2. 数据库设计与规范化:包括关系模型、ER模型、数据库设计的基本原则、数据规范化等。 3. SQL语言:包括SQL语言基础、数据查询语句、数据修改语句、数据控制语句等。 4. 数据库管理:包括数据库的备份与恢复、事务管理、数据库安全与权限控制等。 5. 数据库应用开发:包括基于数据库的应用程序开发、数据库编程语言、数据库连接、事务处理等。 需要注意的是,不同院校对数据库考研复试的考查内容可能会有所不同,以上仅是一些常见的考查内容,考生需要结合自己所报考的院校和专业进行有针对性的备考。 ### 回答2: 数据库考研复试常考的知识点主要包括以下几个方面。 1. 数据库基础知识:包括数据库的概念、数据库管理系统(DBMS)的基本原理和功能,数据库的组成和分类等。 2. 数据库设计:包括关系数据库的概念和特点,关系模型的基本概念和代数运算,实体-关系模型(ER模型)的基本概念和表示方法,关系数据库的设计步骤和规范等。 3. 数据库查询:包括结构化查询语言(SQL)的基本语法和常用查询语句,如SELECT、INSERT、UPDATE和DELETE等,SQL查询的基本原理和优化技巧,常用的查询操作和函数等。 4. 数据库事务和并发控制:包括事务的概念、特性和属性,事务的隔离级别和并发控制的基本原理和方法,如锁机制、并发控制算法和恢复机制等。 5. 数据库存储和索引:包括数据库存储结构和文件组织,数据存储的方法和策略,索引的概念和分类,索引的创建、使用和优化等。 6. 数据库安全和完整性:包括数据库的安全性、权限控制和用户管理,数据库的完整性约束和触发器,数据库备份和恢复等。 以上是数据库考研复试常考的知识点的一个概述,具体的考点和题型可能会因不同学校和考试而有所不同。备考时,应结合具体复试要求和题型特点进行有针对性的学习和准备。 ### 回答3: 数据库考研复试常考的知识点主要包括以下几个方面。 首先是数据库基础知识。必须熟悉关系数据库的概念和基本术语,了解数据库的组成和体系结构,知道数据库的分类和特点。还需要了解关系模型、数据模型和数据独立性等基本概念。 其次是数据库设计与规范化。需要掌握实体-关系模型的基本原理和表示方法,了解关系数据库设计的一般步骤和方法。还需要理解数据规范化的理论和方法,了解各个范式的定义和应用。 第三是SQL语言。需要熟悉SQL语言的基本语法和常用命令,包括数据查询、数据更新、数据插入、数据删除等。还需要了解SQL语言的高级特性,如连接查询、嵌套查询、聚合查询等。 第四是数据库索引和优化。需要掌握数据库索引的概念和作用,了解索引的种类和建立方法。还需要了解数据库的优化策略和优化技术,如查询优化、物理存储优化等。 最后是数据库管理与安全。需要了解数据库管理的基本任务和工作内容,掌握数据库备份和恢复的方法。还需要了解数据库的安全性和权限管理,理解用户和角色的概念,掌握用户管理和权限控制的方法。 综上所述,数据库考研复试常考的知识点涵盖了数据库基础知识、数据库设计与规范化、SQL语言、数据库索引和优化以及数据库管理与安全等方面。只有对这些知识点有全面的了解和掌握,才能在考试中取得好成绩。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值