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

    Mysql高级 (2)——sql性能调优

    sql 性能下降的原因 2 sql service的解析顺序 3 sql 的7中join 4 索引 5 explain 的介绍 单表建立索引案例 2表建立索引案例: 3表建立索引案例: -- 查询慢查询日志是否开启及记录日志的位置

    62530发布于 2019-07-31
  • 来自专栏侯哥的Python分享

    Mysql高级2-SQL性能分析

    一、SQL执行频率   MySQL客户端 连接成功后,通过show [session | global] status 命令可以提供服务器状态信息,通过如下指令,可以查看当前数据库的insert,update SQL中能不做全量查询就不要做全量查询。      说明3:SQL中能通过id查询就不要通过其他字段查询,因为毕竟其他字段的查询还是会根据二级索引查到id,再根据id查询到具体的数据的。    | python | | 1 | 张三 | 3 | php | | 2 | 李四 | 2 | python | | 2 | 李四 | 3 | php | | 3 | student_course表,最后执行student表 参数select_type:表示select的类型,常见的取值有,SIMPLE、PRIMARY、UNION、SUBQUERY 参数type:表示连接的类型,性能由好到差的链接类型为

    46030编辑于 2023-07-31
  • 来自专栏程序员奇点

    SQL 性能优化

    ,在FROM 子句中包含多个表的情况下,你必须选择记录条数最小的表作为基础表, 如果有3个以上的表连接查,选择交叉表(Insertection table)作为基础表,交叉表指的是被其他表锁引用的表 性能优化 SQL语句中IN包含的值不应过多 MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。 再例如:select id from table_name where num in(1,2,3) 对于连续的数值,能用 between 就不要用 in 了;再或者使用连接来替换 尽量用union all 等价于 select * from 表A where exists(select * from 表B where 表B.id=表A.id) 区分in和exists主要是造成了驱动顺序的改变(这是性能变化的关键 如何高效的写出一个替代not exists的sql语句?

    1.1K40发布于 2019-08-30
  • 来自专栏Java后端技术栈cwnait

    2万字,深度解析SQL性能优化,值得收藏

    Web 开发时候,通常的性能瓶颈,主要出现在数据查询时候....... 在使用SQL过程中不仅要关注数据结果,同样要注意SQL语句的执行效率。 性能问题的探索 人为优化: 需要我们使用explain分析SQL的执行计划。 ① using filesort:针对单索引的情况 当出现了这个词,表示你当前的SQL性能消耗较大。表示进行了一次“额外”的排序。常见于order by语句中。 Ⅰ 什么是“额外”的排序? ③ using temporary 当出现了这个词,也表示你当前的SQL性能消耗较大。这是由于当前SQL用到了临时表。一般出现在group by中。 ④ using index 当你看到这个关键词,恭喜你,表示你的SQL性能提升了。 using index称之为“索引覆盖”。

    3.5K14编辑于 2024-05-29
  • 来自专栏开源部署

    Oracle 11g R2性能优化 SQL TRACE

    目录 环境准备 跟踪方式 当前会话跟踪 其他会话跟踪 DBMS_MONITOR包跟踪 当前数据库跟踪 采用登录触发器跟踪 总结 参考 正文 作为Oracle官方自带的一种基本性能诊断工具,SQL Trace SQL Trace会将一条SQL语句或者PL/SQL包执行过程全部输出到跟踪文件(trace)当中,可以通过分析跟踪文件(trace)来分析SQL语句的执行效率并进行性能诊断与优化。 , 2 s.sql_trace_waits, 3 s.sql_trace_binds, 4 traceid, 5 tracefile 定位跟踪的trace文件 SYS@dbabd> select s.sql_trace, 2 s.sql_trace_waits, 3 s.sql_trace_binds :Oracle 11g R2性能优化 tkprof 参考 https://docs.oracle.com/cd/E11882_01/server.112/e41573/sqltrace.htm#PFGRF010

    80610编辑于 2022-08-17
  • 来自专栏用户8907256的专栏

    SQL性能优化以及性能测试

    SQL性能优化以及性能测试 博主介绍 笛卡尔连接 分页limit的sql优化的几种方法 笛卡尔连接 例1: 没有携带on的条件字句,此条slq查询的结构集等价于,a表包含的条数*b表包含的乘积: select * from table a cross join table b; 例2:拥有携带on字句的sql,等价于inner join: select * from table a cross join table 起始主键值 and 结束主键值; 禁止传入过大的页码 (例如;百度就是采用这种方式) count 优化方案 实例1: /** * 1:如果不包含非主键的索引,就会使用主键索引 * 2: 通过explain 查看sql性能如果Extra的值为null时,说明是可以通过索引避免排序的.如果Extra的值是Using filesort 是不可以进行索引排序的 select * from table 在=号的左边,进行加减操作 3: 4: 需要添加索引的几种场景: 1: 2: 3: 4: 5: 阿里规约一般join的表数,最好不要超过三张表; 如果超过的话就要就行做相应的拆分。

    1K30编辑于 2022-04-14
  • 来自专栏杨建荣的学习笔记

    通过shell和sql结合查找性能sql(r2笔记68天)

    在生产系统中,会发现一些潜在的sql问题,为了能够及时和准确的定位,我们可以借助sql_monitor来做性能sql的查找。可以在后台启用一个job不定时的去查找。 毕竟大半夜的我们去监控也是有难度的,我们希望一切都能很自然的处理,结果我在一个指定的目录下每隔10分钟去查找一次性能sql,如果当天已经有生成报告就不重新生成了。 而且直接在生产环境没有目的的进行语句的执行计划抽取,性能问题也会做很多额外的无用功。 " $2");"}' > issue_sql.sql 生成的sql语句类似下面的形式。 , 140805); insert into issue_sql values('0cdthzpx2jn4q', 140722); insert into issue_sql values('0cdthzpx2jn4q

    69970发布于 2018-03-14
  • 来自专栏JAVA高级架构

    SQL性能优化梳理

    第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层:服务器解析并优化sql,生成最终的执行计划并执行 第三层:存储引擎,负责数据的储存和提取 1.2 锁 数据库通过锁机制来解决并发场景-共享锁 被用来设计处理大量短期事务,具有高性能和自动奔溃恢复的特性。 MyISAM引擎,不支持事务和行级锁,奔溃后无法安全恢复。 需要1或2个额外的字节记录字符串的长度。 Char,定长,适合存储固定长度的字符串,如MD5值。 Blob,Text 为了存储很大的数据而设计的。分别采用二进制和字符的方式。 2.like查询前面部分未输入,以%开头无法命中索引。 在性能分析中的使用 EXPLAIN SELECT settleId FROM Settle WHERE settleId = "3679" ?

    1.3K70发布于 2018-04-19
  • 来自专栏辰远

    SQL电脑性能测试

    循环添加10w行数据,测试索引效果 USE myschool; #创建测试表 DROP TABLE IF EXISTS Test; CREATE TABLE Test( id INT, NAME VARCHAR(50) ); # 循环添加10W条数据数据 DROP PROCEDURE IF EXISTS usp_initial_data; DELIMITER // CREATE PROCEDURE usp_initial_data() BEGIN DECLARE i INT; SET

    3.1K40编辑于 2022-11-21
  • 来自专栏JMCui

    SQL优化二(SQL性能调优)

    因为分离了更改数据库buffer的任务:dbwn散列写buffer到disk中,执行快速的顺序写到redo,所以数据库提升了性能。 1.用户提交了一个事务。 优化技巧2:即软解析时,当Shared pool没有空间时,oracle会根据LRU算法(最近最少使用页面置换算法)更新SQL区域,所以适当增加shared_pool,可以存放更多解析后的SQL来提高效率 SQL> begin 2 dbms_stats.create_stat_table(ownname => 'scott',stattab => 'STAT_TABLE'); 3 end; 4 / 2、分析表信息。 deptno from dept; 优化技巧18:Order By语句中的非索引列会降低性能,可以通过添加索引的方式处理。

    1.8K61发布于 2018-03-15
  • 来自专栏全栈程序员必看

    编写高性能SQL

    在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写,刚开始不会体会出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一 在多数情况下,Oracle使用索引来更快的遍历表,优化器主要根据定义的索引来提高性能。 在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能SQL语句。    下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。 http://hovertree.com/menu/oracle/ 2. 联接列    对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能

    3.1K20编辑于 2021-12-27
  • 来自专栏电光石火

    SQL 性能调优

    阅读目录 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效) (2)WHERE子句中的连接顺序 (3)SELECT子句中避免使用 ‘ * ‘ (4)减少访问数据库的次数 (5)在SQL*Plus ,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run 性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能

    4.7K10发布于 2019-12-13
  • 来自专栏电光石火

    SQL 性能调优

    我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享! , ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. (2) ‘ | |'是字符连接函数. 就象其他函数那样, 停用了索引. (3) ‘+'是数学函数. 性能上的差异,关键看你的from和where子句。比如说如果你的where条件中可以通过索引,那显然 select 1 from ... 的性能比 select * from ... 好。 仔细检查order by语句以找出非索引项或者表达式,它们会降低性能

    3.7K60发布于 2018-01-18
  • 来自专栏Python数据科学

    SQL 性能优化梳理

    第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层:服务器解析并优化sql,生成最终的执行计划并执行 第三层:存储引擎,负责数据的储存和提取 1.2 锁 数据库通过锁机制来解决并发场景-共享锁 被用来设计处理大量短期事务,具有高性能和自动崩溃恢复的特性。 MyISAM引擎,不支持事务和行级锁,崩溃后无法安全恢复。 需要1或2个额外的字节记录字符串的长度。 Char,定长,适合存储固定长度的字符串,如MD5值。 Blob,Text 为了存储很大的数据而设计的。分别采用二进制和字符的方式。 2.like查询前面部分未输入,以%开头无法命中索引。 : "value2"}'); SELECT * FROM json_test WHERE JSON_CONTAINS(name, '$.name1'); 来自JVM专家-达 关注explain在性能分析中的使用

    1K20发布于 2019-11-21
  • 来自专栏猿人谷

    Oracle SQL性能优化

    2)      WHERE子句中的连接顺序.: ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在 (译者按: TRUNCATE只在删除全表适用,TRUNCATE是DDL不是DML) (10) 尽量多使用COMMIT: 只要有可能,在程序中尽量多使用COMMIT, 这样程序的性能得到提高,需求也会因为 效率.: 复杂的SQL往往牺牲了执行效率. , ROUND((BUFFER_GETS-DISK_READS)/BUFFER_GETS,2) Hit_radio, ROUND(DISK_READS/EXECUTIONS,2) Reads_per_run 记住, 索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. (2) ‘||'是字符连接函数. 就象其他函数那样, 停用了索引. (3) ‘+'是数学函数.

    3.6K70发布于 2018-01-17
  • 来自专栏程序员的成长之路

    SQL 性能优化梳理

    第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层:服务器解析并优化sql,生成最终的执行计划并执行 第三层:存储引擎,负责数据的储存和提取 1.2 锁 数据库通过锁机制来解决并发场景-共享锁 被用来设计处理大量短期事务,具有高性能和自动崩溃恢复的特性。 MyISAM引擎,不支持事务和行级锁,崩溃后无法安全恢复。 需要1或2个额外的字节记录字符串的长度。 Char,定长,适合存储固定长度的字符串,如MD5值。 Blob,Text 为了存储很大的数据而设计的。分别采用二进制和字符的方式。 2.like查询前面部分未输入,以%开头无法命中索引。 : "value2"}'); SELECT * FROM json_test WHERE JSON_CONTAINS(name, '$.name1'); 来自JVM专家-达 关注explain在性能分析中的使用

    86820发布于 2019-11-23
  • 来自专栏.NET企业级解决方案应用与咨询

    SQL 性能优化 总结

    SQL 性能优化 总结 (1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 (2) WHERE子句中的连接顺序:SQL Server、 ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他 WHERE条件之前, 那些可以过 滤掉最大数量记录的条件必须写在 (5)在SQL*Plus , SQL*Forms和Pro*C 中重新设置ARRAYSIZE 参数, 可以增加每次数据库访问的检索数据量 ,建议值为200。 (10)尽量多使用COMMIT: 只要有可能,在程序中尽量多使用 COMMIT, 这样程序的性能得到提高,需求也会因为 COMMIT所释放的资源而减少: COMMIT所释放的资源: 记住,索引只能告诉你什么存在于表中, 而不能告诉你什么不存在于表中. (2)‘||'是字符连接函数.

    2.5K20发布于 2019-09-17
  • 来自专栏数据库干货铺

    SQL基础(2

    之前的SQL基础1中已经介绍了部分Select的内容,但是,实际使用中select 还有很多其他的用法,本文会再介绍部分select的其他用法。 1. 去重查询 1.1 创建演示表 创建2张表用于演示,表名分别为student和class,后续也将继续用这2张表演示,2张表的数据如下: student表 ? class表 ? class_no | +----------+ | 201801 | | 201901 | | 201902 | +----------+ 3 rows in set (0.00 sec) 2. 6.1 内连接 内连接是查询2张表同时存在的记录,即两张表的交集。 | 2019级02班 | +----------+--------------+ 6 rows in set (0.00 sec) c) in可以用内连接的方式来改写,尤其是多层子查询时,这也是SQL

    62940发布于 2019-11-29
  • 来自专栏捞月亮的小北

    2-SQL

    SQL 全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了 一套操作关系型数据库统一标准 。 2. SQL 通用语法 1). SQL 语句可以单行或多行书写,以分号结尾。 2). SQL 语句可以使用空格/缩进来增强语句的可读性。 3). MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写。 4). SQL 分类 SQL 语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。 给全部字段添加数据 语法: INSERT INTO 表名 VALUES (值1, 值2, ...); 案例: 插入数据到 employee 表,具体的 SQL 如下: insert into employee 值2, ...), (值1, 值2, ...) ; 案例: 批量插入数据到 employee 表,具体的 SQL 如下: insert into employee values(3,'3','韦一笑',

    1.2K10编辑于 2023-12-01
  • 来自专栏架构驿站

    性能优化】MySQL之SQL剖析(SQL profile)

    分析SQL执行带来的开销是优化SQL的重要手段。在MySQL数据库中,可以通过配置profiling参数来启用SQL剖析。该参数可以在全局和session级别来设置。 该参数开启后,后续执行的SQL语句都将记录其资源开销,诸如IO,上下文切换,CPU,Memory等等。根据这些开销进一步分析当前SQL瓶颈从而进行优化与调整。 2、开启porfiling --启用session级别的profiling root@localhost[sakila]> set profiling=1; Query OK, 0 rows --------------------------+ | 1 | 0.00253600 | show variables like '%profil%' | | 2 语句用于查询query_id为2SQL开销,且按最大耗用时间倒序排列 root@localhost[sakila]> set @query_id=2; root@localhost[sakila

    83540编辑于 2022-03-25
领券