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

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

    PolarDB for MySQL 云原生数据库的SQL优化,这集一定有人说,和MySQL优化有区别吗?你把那个吗去了,一样我写他做什么。 至于其他的优化方法和参数我们在找时间单独去书,到这里PolarDB的 SQL优化方法相对MySQL本身丰富多,这就直接让MySQL可以支持更多丰富的复杂得SQL的计算,为复杂的应用撰写复杂的SQL,且高效运行提供了条件 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 怎么让自己更高级-

    8910编辑于 2026-03-12
  • 来自专栏侯哥的Python分享

    Mysql高级5-SQL优化

    ' 内容到新创建的表中,其中tb_user_data.sql中的测试数据如下 houlei@houleideMacBook-Pro Desktop % cat tb_user_data.sql 1,a, aa,aaa,2023-07-01,1 2,b,bb,bbb,2023-07-02,0 3,c,cc,ccc,2023-07-03,1 4,d,dd,ddd,2023-07-04,0 5,e,ee,eee into table tb_user 是将文件中的数据,插入到tb_user表中     说明4:fields terminated by ',' 是说每个字段之间的数据是使用','分割的     说明5: by 是age在前,salary在后,和索引的顺序不一致,仍然会触发索引,使用Using index,但是也会使用Using filesort,所以推荐大家使用正确的索引顺序的字段来进行排序 案例5: count的几种用法 count(*):       InnoDB引擎并不会把全部的字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加,mysql 对count(*)做了优化

    55630编辑于 2023-08-02
  • 来自专栏全栈程序员必看

    mysql的sql语句优化5种方式_MySQL数据库优化

    联合索引,但其中一个条件是 > 6、联合索引,order by 三、单表sql优化 1、删除student表中的联合索引。 2、添加索引 3、更改索引顺序 4、去掉in 5、小结 四、双表sql优化 1、建表语句 2、左连接查询 3、小结 五、避免索引失效的一些原则 六、一些其他的优化方法 1、exist和in 2、order 5、联合索引,但其中一个条件是 > 6、联合索引,order by where和order by一起使用时,不要跨索引列使用。 三、单表sql优化 1、删除student表中的联合索引。 5、小结 保持索引的定义和使用顺序一致性; 索引需要逐步优化,不要总想着一口吃成胖子; 将含in的范围查询,放到where条件的最后,防止索引失效; 四、双表sql优化 1、建表语句 CREATE TABLE 3、小结 小表驱动大表 索引建立在经常查询的字段上 sql优化,是一种概率层面的优化,是否实际使用了我们的优化,需要通过explain推测。

    2.2K40编辑于 2022-09-24
  • 来自专栏java一日一条

    SQL Server优化SQL语句优化

    WHERE:对vt3应用 WHERE 筛选器只有使 where_condition 为true的行才被插入vt4 5. GROUP BY:按GROUP BY子句中的列列表对vt4中的行分组生成vt5 6. CUBE|ROLLUP:把超组(supergroups)插入vt6,生成vt6 7. 只要我们在查询语句中没有强制指定索引,索引的选择和使用方法是SQLSERVER的优化器自动作的选择,而它选择的根据是查询语句的条件以及相关表的统计信息,这就要求我们在写SQL语句的时候尽量使得优化器可以使用索引 为了使得优化器能高效使用索引,写语句的时候应该注意: (1)不要对索引字段进行运算,而要想办法做变换,比如: SELECT ID FROM T WHERE NUM/2=100 应改为: SELECT ID 我们可以用回滚来调试我们的存储过程或者是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.7K20编辑于 2024-03-29
  • 来自专栏用户8851017的专栏

    SQL优化

    MySQL常见的优化手段分为下面几个方面: SQL优化、设计优化,硬件优化等,其中每个大的方向中又包含多个小的优化SQL优化优化方案指的是通过优化 SQL 语句以及索引来提高 MySQL 数据库的运行效率 = 或者 <> 操作符 SQL中,不等于操作符会导致查询引擎放弃索引索引,引起全表扫描,即使比较的字段上有索引 解决方法:通过把不等于操作符改成or,可以使用索引,避免全表扫描 例如,把column<> ,代价很高 慢查询日志 出现慢查询通常的排查手段是先使用慢查询日志功能,查询出比较慢的 SQL 语句,然后再通过 Explain 来查询 SQL 语句的执行计划,最后分析并定位出问题的根源,再进行处理 慢查询日志指的是在 MySQL 中可以通过配置来开启慢查询日志的记录功能,超过long_query_time值的 SQL 将会被记录在日志中 我们可以通过设置“slow_query_log=1”来开启慢查询 个字节记录字符串长度,更新时也容易产生碎片 需要结合使用场景来选择:如果字符串列最大长度比平均长度大很多,或者列的更新很少,选择varchar较合适;如果要存很短的字符串,或者字符串值长度都相同,比如MD5

    1.2K30发布于 2021-07-22
  • 来自专栏爱明依

    SQL 优化

    SQL 优化 负向查询不能使用索引 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 create_time < FROM_UNIXTIME(CURDATE()); 最左前缀问题 如果给 user 表中的 username pwd 字段创建了复合索引那么使用以下SQL

    73340编辑于 2022-04-01
  • 来自专栏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 ③ 表结构设计优化 使用可以存下数据最小的数据类型

    87820发布于 2020-06-08
  • 来自专栏FREE SOLO

    SQL优化

    1.有哪些数据库优化方面的经验? 用PreparedStatement, 一般来说比Statement性能高:一个sql 发给服务器去执行,涉及步骤:语法检查、语义分析, 编译,缓存。 基于语句的复制: 在主服务器上执行的SQL语句,在从服务器上执行同样的语句。MySQL默认采用基于语句的复制,效率比较高。 一旦发现没法精确复制时,会自动选着基于行的复制。 5. mysql中myisam与innodb的区别? 事务支持 MyISAM:强调的是性能,每次查询具有原子性,其执行数度比InnoDB类型更快,但是不提供事务支持。

    1K20发布于 2019-04-19
  • 来自专栏Java技术详解

    SQL优化

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

    40310编辑于 2023-11-02
  • 来自专栏P轴

    SQL优化

    Extra 1 SIMPLE product ref index_title index_title 767 const 1 Using where # 5. Mysql查询优化方法 重点 思路:便面全表扫描 禁止用* 来查询,需要指定字段 in的个数在1000个以内 查询一条数据使用limit 1 尽量使用inner join 避免使用left join ! = 用 > or < 替换 between代替in exist 代替in 例如:优化前10s,优化5s SELECT * from product WHERE title IN (SELECT title 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

    68210编辑于 2022-11-28
  • 来自专栏国产程序员

    SQL优化

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

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

    SQL优化

    transaction; insert into tb test values(1,'Tom'),(2,'Cat'),(3,Jerry'); insert into tb test values(4,'Tom'),(5, 开启从本地加载文件导入数据的开关 set global local_infile =1; #执行load指令将准备好的数据,加载到表结构中 load data local infile '/root/sql1 当页中删除的记录达到MERGE _THRESHOLD(默认为页的50%),InnoDB会开始寻找最靠近的页(前或后)看看是否可以将两个页合并以优化空间使用。 优化思路:一般分页查询时,通过创建覆盖索引能够比较好地提高性能,可以通过覆盖索引加子查询形式进行优化。 count() InoDB引擎并不会把全部字段取出来,而是专门做了优化,不取值,服务层直接按行进行累加。

    69450编辑于 2023-10-11
  • 来自专栏友儿

    SQL优化

    , dept varchar(5) , primary key(id) )ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ; 3.SQL优化 SQL性能问题 a.分析SQL的执行计划 : explain ,可以模拟SQL优化器执行SQL语句,从而让开发人员 知道自己编写的SQL状况 b.MySQL查询优化其会干扰我们的优化 优化方法,官网 在真正执行前 经过了SQL优化器的调整,结果与上条SQL是一致的。 =2 ; 体验概率情况(< > =):原因是服务层中有SQL优化器,可能会影响我们的优化。 ,是一个大部分情况适用的结论,但由于SQL优化器等原因 该结论不是100%正确。

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

    SQL优化

    一、SQL语句编写注意问题 下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。 下面是一个采用联接查询的SQL语句,这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。 5. NOT 我们在查询时经常在where子句使用一些逻辑表达式,如大于、小于、等于以及不等于等等,也可以使用and(与)、or(或)以及not(非)。NOT可用来对任何逻辑运算符号取反。 二、写优良SQL的基本规则 1、对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 5、应尽量避免在 where 子句中使用 or 来连接条件,如果一个字段有索引,一个字段没有索引,将导致引擎放弃使用索引而进行全表扫描,可以使用union/union all 代替

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

    SQL优化

    对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 存储过程是编译好、优化过、并且被组织到一个执行规划里、且存储在数据库中的SQL语句,是控制流语言的集合,速度当然快。 当服务器的内存够多时,配制线程数量 = 最大连接数+5,这样能发挥最大的效率;否则使用 配制线程数量<最大连接数启用SQL SERVER的线程池来解决,如果还是数量 = 最大连接数+5,严重的损害服务器的性能 运行时逐列计算得到的,因此它不得不进行表搜索,而没有使用该列上面的索引;如果这些结果在查询编译时就能得到,那么就可以被SQL优化优化,使用索引,避免表搜索,因此将SQL重写成下面这样: SELECT =STRICT的问题,对于记录数小于5的索引字段,在UNION的时候使用LIMIT不是是用OR。

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

    sql优化

    真实的数据存在于叶子节点即3、5、9、10、13、15、28、29、36、60、75、79、90、99。非叶子节点不存储真实的数据,只存储指引搜索方向的数据项,如17、35并不真实存在于数据表中。 典型的值是5-6GB(8GB内存),20-25GB(32GB内存),100-120GB(128GB内存)。 innodb_log_file_size 这是redo日志的大小。 SQL 调优 一般要进行SQL调优,那么就说有慢查询的SQL,系统或者server可以开启慢查询日志,尤其是线上系统,一般都会开启慢查询日志,如果有慢查询,可以通过日志来过滤。 但是知道了有需要优化SQL后,下面要做的就是如何进行调优 慢查询优化基本步骤 先运行看看是否真的很慢,注意设置SQL_NO_CACHE where条件单表查,锁定最小返回记录表。 所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

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

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

    无论是OLTP业务高并发写入,还是OLAP场景的大规模查询分析,SQL优化都是工程师必须掌握的核心能力。本文从原理到实践,系统讲解SQL优化的关键方法,帮助你在实际项目中显著提升查询效率。 一、SQL优化的核心思路SQL优化的本质是:减少扫描、减少计算、减少数据量、减少等待。 优化实战案例(简版)案例:慢查询5秒原SQL:展开代码语言:SQLAI代码解释SELECT*FROMordersWHEREuser_id=1001ORDERBYcreate_timeDESCLIMIT20 ;问题:user_id无索引ORDERBYcreate_time需要排序优化:建组合索引(user_id,create_time)查询变为覆盖索引排序在索引中完成优化后耗时:5秒→20毫秒结语SQL优化不是单点技巧 ,而是一套系统方法:索引设计→SQL写法→执行计划分析→架构优化

    47610编辑于 2026-01-13
  • SQL 优化思路

    2、优化查询语句(避免索引失效) (1)应尽量避免在 where 子句中使用! =或<>操作符 (2)应尽量避免在 where 子句中使用 or 来连接条件 (3)任何查询也不要出现select * (4) 避免在 where 子句中对字段进行 null 值判断 3、索引优化(慢查询优化 ) (1)对作为查询条件和 order by 的字段建立索引 (2)避免建立过多的索引,多使用组合索引 (3)分析语句,是否加载了不必要的字段/数据 (4)分析 SQL 执行句话,是否命中索引等 (5) 如果 SQL 很复杂,优化 SQL 结构 (6)如果表数据量太大,考虑分表 索引有哪些优缺点? 慢查询优化:https://cloud.tencent.com/developer/article/1832945 1、

    36910编辑于 2024-03-12
  • 来自专栏Java后端技术栈cwnait

    SQL优化实战

    正文 今天遇到一个SQL优化的问题,记录下来 测试部门反映,有个功能的查询很缓慢,需要支持排查下 首先描述下具体的问题 数据库中一张表的大概有700多条记录,业务需要模拟一个类似属性树形的数据结构 ,需要查询所有父类的列表数据,查询出来符合记录的大概有400多条,目前测试点击查询,所需要的时间大概在4s多,这个效率实在太慢了; 下面是SQL的内容 SELECT (SELECT 语句,发现查询的效率变快了了,耗时2700+ms数,这个时间还是满足不了业务的需要 重构SQL 分析上述的sql,发现在子查询中通过排序来获取send_recv_count最大的记录,然后再分组查询 ,这个是主要导致查询效率缓慢的原因,我们可以改写sql语句来减少分组和排序 我们利用变量来为排序标记,然后获取变量为1的记录,利用这种方式来避免排序分组, 重构的sql如下: SELECT 中,可以看到我们排序之后的记录添加一个序列,然后获取序列的第一条来作为我们现实的记录,然后将in改为exists,这样优化后的查询就变得效率很高了,经过测试,耗时降到了200ms,这个速度暂时是可以接受的了

    57910发布于 2020-02-13
领券