首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏Java架构师必看

    java面试(3)SQL优化

    java面试(3)SQL优化 ? 因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。 对多条数据的操作,能尽量批量操作的就批量操作,减少sql的数量。每一个sql都是一个数据库连接 查询语句执行顺序(只在基于规则的优化器中有效): from子句:执行顺序从后向前,从右向左。 被程序语句获得的锁 redo log buffer 中的空间 ORACLE为管理上述3种资源中的内部花费 避免使用HAVING子句, HAVING 只会在检索出所有记录之后才对结果集进行过滤. 语句用大写的;因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行 避免在索引列上使用计算:如果索引列是函数的一部分,优化器将不使用索引而使用全表扫描.

    4.3K20发布于 2021-06-16
  • 来自专栏AustinDatabases

    MySQL SQL 优化指南 SQL 四句真言(优化系列 3

    上期说完MSSQL的优化后,相信科技的力量让SQL优化更加简单深入人心,但如果你用的是MySQL,瞬间一种天堂到地狱的赶脚。咱们今天就说说磨练人心性的MySQL SQL优化。 咱们也有四句真言,给MySQL SQL优化 参数调整挺重要,查询方式很重要, 大表你的要会拆,架构优化少不了, 善用SQL的改写,避免中间大结果, 尽量升级8.0 ,更好引擎效率高。 所以早期的MySQL的优化心思不是 SQL优化,是架构的优化,分库分表。 置顶 沧海要,《SQL SERVER 运维之道》,清风笑,竟惹寂寥 SQL SERVER SQL 优化指南 四句真言 (SQL 优化系列 2) PostgreSQL SQL 优化指南 四句真言(SQL 优化系列 1) 从 Universal 环球影城 到 国产数据库产品 营销 --驴唇对马嘴 3种方式 PG大版本升级 接锅,背锅,不甩锅 以客户为中心做产品 "PostgreSQL" 不重启机器就能调整

    15210编辑于 2026-03-12
  • 来自专栏java一日一条

    SQL Server优化SQL语句优化

    ,就是尽量减少在客户端进行大数据量的循环操作,而用SQL语句或者存储过程代替。 只要我们在查询语句中没有强制指定索引,索引的选择和使用方法是SQLSERVER的优化器自动作的选择,而它选择的根据是查询语句的条件以及相关表的统计信息,这就要求我们在写SQL语句的时候尽量使得优化器可以使用索引 为了使得优化器能高效使用索引,写语句的时候应该注意: (1)不要对索引字段进行运算,而要想办法做变换,比如: SELECT ID FROM T WHERE NUM/2=100 应改为: SELECT ID 还有就是我们写存储过程,如果比较长的话,最后用标记符标开,因为这样可读性很好,即使语句写的不怎么样,但是语句工整,C# 有region,SQL我比较喜欢用的就是: –startof 查询在职人数 SQL 我们可以用回滚来调试我们的存储过程或者是SQL语句,从而排错。

    4.1K34发布于 2018-09-19
  • 来自专栏MySQL系列

    SQL优化——order by优化

    1.1.order by优化1.1.1.知识点回顾在讲解order by优化前,先回顾一下order by的语法知识。 asc , age desc;1.1.2.两种排序方式MySQL有两种排序方式Using filesort和Using index,Using index的性能高于Using filesort,我们在优化排序操作时 ,尽量要优化为 Using indexUsing filesort : 通过表的索引或全表扫描,读取满足条件的数据行,然后在排序缓冲区sort buffer中完成排序操作,所有不是通过索引直接返回排序结果的排序都叫 1.1.3.order by优化案例演示1.1.3.1.案例A在上面我们创建了字段age和phone的联合索引,而且没有指定索引的排序顺序,此时索引在表中默认是按照升序排列的。 :MySQL有两种排序方式Using filesort和Using index,在优化排序操作时,尽量要优化为 Using index根据排序字段建立合适的索引,多字段排序时,索引需要遵循最左前缀法则。

    1.8K20编辑于 2024-03-29
  • 来自专栏JAVA人生/面试技巧

    SQL优化

    优化手段: ① SQL优化 避免 SELECT *,只查询需要的字段。 小表驱动大表,即小的数据集驱动大的数据集: 当B表的数据集比A表小时,用in优化 exist两表执行顺序是先查B表再查A表查询语句:SELECT * FROM tb_dept WHERE id in ( SELECT id FROM tb_dept) ; 当A表的数据集比B表小时,用exist优化in ,两表执行顺序是先查A表,再查B表,查询语句:SELECT * FROM A WHERE EXISTS ② 优化索引的使用 尽量使用主键查询,而非其他索引,因为主键查询不会触发回表查询。 = 或者 <> 操作符,查询引用会放弃索引而进行全表扫描 列表数据使用分页查询,每页数据量不要太大 避免在索引列上使用 is null 和 is not null ③ 表结构设计优化 使用可以存下数据最小的数据类型

    88620发布于 2020-06-08
  • 来自专栏爱明依

    SQL 优化

    SQL 优化 负向查询不能使用索引 select name from user where id not in (1,3,4); 应该修改为: select name from user where id user where create_time < FROM_UNIXTIME(CURDATE()); 最左前缀问题 如果给 user 表中的 username pwd 字段创建了复合索引那么使用以下SQL

    73940编辑于 2022-04-01
  • 来自专栏用户8851017的专栏

    SQL优化

    MySQL常见的优化手段分为下面几个方面: SQL优化、设计优化,硬件优化等,其中每个大的方向中又包含多个小的优化SQL优化优化方案指的是通过优化 SQL 语句以及索引来提高 MySQL 数据库的运行效率 = 或者 <> 操作符 SQL中,不等于操作符会导致查询引擎放弃索引索引,引起全表扫描,即使比较的字段上有索引 解决方法:通过把不等于操作符改成or,可以使用索引,避免全表扫描 例如,把column<> JOIN关联太多的表 对于 MySQL 来说,是存在关联缓存的,缓存的大小可以由join_buffer_size参数进行设置 在 MySQL 中,对于同一个 SQL 多关联(join)一个表,就会多分配一个关联缓存 ,代价很高 慢查询日志 出现慢查询通常的排查手段是先使用慢查询日志功能,查询出比较慢的 SQL 语句,然后再通过 Explain 来查询 SQL 语句的执行计划,最后分析并定位出问题的根源,再进行处理 慢查询日志指的是在 MySQL 中可以通过配置来开启慢查询日志的记录功能,超过long_query_time值的 SQL 将会被记录在日志中 我们可以通过设置“slow_query_log=1”来开启慢查询

    1.2K30发布于 2021-07-22
  • 来自专栏wayn的程序开发

    线上sql执行慢,分享3优化案例

    前段时间,博主线上项目的几个后端接口执行耗时达到了三、四秒钟以上,查看接口代码,发现 sql 语句执行过慢,于是开始分析 sql 执行 这里把比较经典的优化案例分享给大家。 qq_id = 'xxx' OR app_id = 'xxx' OR weixin_id = 'xxx' ;执行结果: 需要1.3秒左右,这是在我本地模拟的数据,线上用户在百万级别,耗时已经达到2、3秒 这里用 tb_newbee_mall_goods_info 表举例,表结构展示: 3个 update 语句同时执行结果如下: 如上,假如其中一个 update 语句需要耗时40毫秒,那么当有100条 「update + case」执行结果: 可以看出我们更新了3条记录,耗时50毫秒,更新记录越多时,优化效果也就明显。 总结到这里,本文所分享的3优化案例就介绍完了,希望对大家日常开发有所帮助,喜欢的朋友们可以点赞加关注。

    1.6K21编辑于 2023-03-19
  • 来自专栏Java技术详解

    SQL优化

    SQL的编写尽量使用索引库查询。索引库查询是小表查询操作,耗费的查询数据性能时间较少。索引失效是由like模糊匹配所产生的查询性能问题。 SQL的编写过程涉及到的子查询不能嵌套太多,子查询会在运行内存中给数据输出对象分配内存空间。嵌套分配内存不利于内存空间的释放。表与表之间的关联关系建立通过外键和主表的主键进行关联。 SQL的数据输出数据区尽量使用简单的数据。聚集函数在SQL的输出数据区存在会生成数据输出集合,类似复杂数据对象不利于数据的检索。聚集函数输出数据会产生索引失效,需要重新对输出数据建立索引。 SQL的条件过滤is null 是不会扫描索引表。节省数据索引表的内存空间。条件or关键字尽量少用,也是不会和数据索引表产生关联。数据表的小表类似索引表,大表类似数据库记录表。

    42010编辑于 2023-11-02
  • 来自专栏FREE SOLO

    SQL优化

    1.有哪些数据库优化方面的经验? 用PreparedStatement, 一般来说比Statement性能高:一个sql 发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。 3.在mysql数据库中索引的工作机制是什么? 数据库索引,是数据库管理系统中一个排序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。 基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时,会自动选着基于行的复制。

    1K20发布于 2019-04-19
  • 来自专栏国产程序员

    SQL优化

    SQL书写习惯 SQL语句尽量使用大写。 Oracle解析SQL语句时,会把小写的字母转换成大写的再执行。 T_ID=T2.T_ID 表连接语句 AND T1.T=’Y’ 条件语句 从下至上的顺序 相同查询要保持SQL 只有第一列被WHERE子句引用时,优化器才会选择使用该索引。当仅引用索引的第二列时,优化器使用全表扫描而忽略了索引。

    1.2K30发布于 2019-07-02
  • 来自专栏基础知识文章

    SQL优化

    一、插入数据 批量插入 Insert into tb_test values(1,'Tom'),(2,'Cat'),(3,Jerry'); 手动提交事务 start transaction; insert into tb test values(1,'Tom'),(2,'Cat'),(3,Jerry'); insert into tb test values(4,'Tom'),(5,'Cat'),(6, 开启从本地加载文件导入数据的开关 set global local_infile =1; #执行load指令将准备好的数据,加载到表结构中 load data local infile '/root/sql1 优化思路:一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化。 count() InoDB引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。

    73050编辑于 2023-10-11
  • 来自专栏P轴

    SQL优化

    Mysql查询优化方法 重点 思路:便面全表扫描 禁止用* 来查询,需要指定字段 in的个数在1000个以内 查询一条数据使用limit 1 尽量使用inner join 避免使用left join ! = 用 > or < 替换 between代替in exist 代替in 例如:优化前10s,优化后5s SELECT * from product WHERE title IN (SELECT title 同步数据 # 3. Master_UUID: Master_Info_File: /var/lib/mysql/master.info SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting

    68710编辑于 2022-11-28
  • 来自专栏友儿

    SQL优化

    性能问题 a.分析SQL的执行计划 : explain ,可以模拟SQL优化器执行SQL语句,从而让开发人员 知道自己编写的SQL状况 b.MySQL查询优化其会干扰我们的优化 优化方法,官网:https 4 ; --虽然编写的顺序 和索引顺序不一致,但是 sql在真正执行前 经过了SQL优化器的调整,结果与上条SQL是一致的。 explain select * from book where authorid = 1 and typeid =2 ; -- SQL优化,是一种概率层面的优化。 =2 ; 体验概率情况(< > =):原因是服务层中有SQL优化器,可能会影响我们的优化。 ,是一个大部分情况适用的结论,但由于SQL优化器等原因 该结论不是100%正确。

    2.3K10编辑于 2022-09-09
  • 来自专栏java沉淀

    SQL优化

    一、SQL语句编写注意问题 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。 下面是一个采用联接查询的SQL语句,这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。 *** where first_name =’Beill’ and last_name =’Cliton'; 3. 带通配符(%)的like语句 同样以上面的例子来看这种情况。 二、写优良SQL的基本规则 1、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 3、最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.NULL值也是可能会需要占用空间的,一些定长的数据类型即使数据为NULL也是会占用空间的。

    6.2K20发布于 2019-03-19
  • 来自专栏blog-技术博客

    SQL优化

    对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 使用 nolock有3条原则。 查询的结果用于“插、删、改”的不能加nolock !查询的表属于频繁发生页分裂的,慎用nolock ! 存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快。 运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化优化,使用索引,避免表搜索,因此将SQL重写成下面这样: SELECT 如果有3个以上的表连接查询, 那就需要选择交叉表(intersection table)作为基础表, 交叉表是指那个被其他表所引用的表.

    1.1K20编辑于 2022-05-10
  • 来自专栏算法

    sql优化

    =和in可以乱序,比如a = 1 and b = 2 and c = 3 建立(a,b,c)索引可以任意顺序,mysql的查询优化器会帮你优化成索引可以识别的形式 尽量选择区分度高的列作为索引,区分度的公式是 SQL 调优 一般要进行SQL调优,那么就说有慢查询的SQL,系统或者server可以开启慢查询日志,尤其是线上系统,一般都会开启慢查询日志,如果有慢查询,可以通过日志来过滤。 但是知道了有需要优化SQL后,下面要做的就是如何进行调优 慢查询优化基本步骤 先运行看看是否真的很慢,注意设置SQL_NO_CACHE where条件单表查,锁定最小返回记录表。 语句,找出这些SQL语句并不意味着完事了,我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看 所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

    46510编辑于 2024-12-10
  • 来自专栏Linux运维

    SQL 优化优化 SQL 语句,提高查询效率

    无论是OLTP业务高并发写入,还是OLAP场景的大规模查询分析,SQL优化都是工程师必须掌握的核心能力。本文从原理到实践,系统讲解SQL优化的关键方法,帮助你在实际项目中显著提升查询效率。 一、SQL优化的核心思路SQL优化的本质是:减少扫描、减少计算、减少数据量、减少等待。 优化方式:使用索引字段排序避免对大表直接排序使用覆盖索引减少回表必要时使用临时表提前过滤四、执行计划分析(EXPLAIN)SQL优化必须依赖执行计划。 常见选择:OLTP:READCOMMITTED金融类强一致:REPEATABLEREAD或SERIALIZABLE六、缓存与分库分表当SQL优化到极限后,需要从架构层面优化。 ,而是一套系统方法:索引设计→SQL写法→执行计划分析→架构优化

    51110编辑于 2026-01-13
  • 来自专栏AustinDatabases

    PolarDB MySQL SQL 优化指南 (SQL优化系列 5)

    PolarDB for MySQL 云原生数据库的SQL优化,这集一定有人说,和MySQL优化有区别吗?你把那个吗去了,一样我写他做什么。 调整的小了,将对于并发高,大型SQL高的情况有利,但会造成部分SQL无法使用并行的情况, 3 loose_max_parallel_workers 这个参数是意义和上面的不同,这是一个池的概念,也就是假设我有 MongoDB 查询 优化指南 四句真言 (查询 优化系列 4) 沧海要,《SQL SERVER 运维之道》,清风笑,竟惹寂寥 MySQL SQL 优化指南 SQL 四句真言(优化系列 3) 沧海要, 《SQL SERVER 运维之道》,清风笑,竟惹寂寥 SQL SERVER SQL 优化指南 四句真言 (SQL 优化系列 2) PostgreSQL SQL 优化指南 四句真言(SQL 优化系列 1 (译) MySQL 8 SQL 优化两则 ---常见问题 MySQL SQL优化快速定位案例 与 优化思维导图 "DBA 是个der" 吵出MySQL主键问题多种解决方案 MySQL 怎么让自己更高级-

    9810编辑于 2026-03-12
  • 来自专栏深蓝居

    .Net+SQL Server企业应用性能优化笔记3——SQL查询语句

    ANTS Profiler+SQL Server Profiler,这两个工具的完美搭配可以准确的定位性能是出在哪个函数,哪个SQL语句上。 .net上的优化我暂时不表,今天主要讲数据库的优化。使用ANTS Profiler+SQL Server Profiler我们可以精确定位某个业务操作对应的数据库脚本或者存储过程。 解决办法就是建立相应的索引,比如这里只需要对c2字段建立非聚集索引,然后将c3字段作为包行列就行了。 如果只是最c2字段建立非聚集索引,那么前面说到的查找在进行了“非聚集索引查找”后还会进行“键查找”来找到c3列的值,所以要建立的正确的索引才行。 不符合SARG原则。 如果Duration并不大,但是Reads却很大的查询仍然需要需要进行优化

    99020编辑于 2022-06-16
领券