SQL 优化核心思想

SQL 优化核心思想


SQL 优化必懂的概念

概念英文含义影响示例计算临界
基数Cardinality某个列唯一键(Distinct Keys)的数量基数的高低影响列的数据分布性别字段基数为25%,当查询结果返回表中5%以内的数据时应该走索引;反之,走全表扫描;在表中有male 有 50个,总数据100,那么检索sex=male,50%不走索引
选择性Selectivity基数与总行数的比值再乘以100即为某列的选择性当一个列的选择性大于20%,说明该列的数据分布就比较均衡了
  • 计算
-- 列的基数
select column_name,count(*) from table group by column_name order by 2 desc
-- 列的选择性
select
a.TABLE_NAME as "表名称", 
a.COLUMN_NAME as "表中列名称",
a.CARDINALITY as "列的基数",
b.TABLE_ROWS as "表中总行数",
ROUND(a.CARDINALITY / b.TABLE_ROWS * 100 ,2 ) as "选择性" 
from information_schema.STATISTICS a , information_schema.`TABLES` b 
where a.TABLE_NAME = b.TABLE_NAME 
and a.TABLE_SCHEMA = "test"
and a.TABLE_NAME = "test" ;
-- 列的选择性过低,减少数据总数量,定时批量删除无效数据
  • 说明
    • order by 2 ,根据第二列排序,当前查询的列中的第二列,而不是表中的第二列1
    • 什么样的列必须要创建索引?STATISTICS 2
      • 当一个列出现在where条件中,该列没有创建索引并且选择性大于20%
      • 表中只有几百条数据也无需建立索引
        • 索引是创建表时添加 or 运行中 ?
          • 预估表中数据量
            • 如果是字典表,则无需建立索引;
            • 如果是业务表,预估业务增长速度,按照开发时关于该表的查询SQL字段建立索引

  1. order by 1,2这个是什么意思,该如何解决 ↩︎

  2. MySQL 字典表 ↩︎

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
oracle数据库的性能优化直接关系到系统的运行效率,而影响数据库性能的一个重要因素就是sql性能问题。本书是作者十年磨一剑的成果之一,深入分析与解剖oracle sql优化与调优技术,主要内容包括: 第一篇“执行计划”详细介绍各种执行计划的含义与操作,为后面的深入分析打下基础。重点讲解执行计划在sql语句执行的生命周期中所处的位置和作用,sql引擎如何生成执行计划以及如何获取sql语句的执行计划,如何从各种数据源显示和查看已经生成的执行计划。 第二篇“sql优化技术”深入分析oracle的sql优化技术,包括逻辑优化技术和物理优化技术。用大量示例详尽分析oracle 中现有的各种查询转换技术,先分析oracle如何收集、统计系统和对象的数据,然后推导各种代价估算公式,给出各种情形下的代价计算演示。 第三篇“sql调优技术”深入剖析oracle提供的各项调优技术。先对语句实际运行的性能统计数据进行了深度分析,介绍各项统计数据是由什么操作导致的以及如何统计。然后介绍如何对sql语句进行优化以获得稳定、高效的性能。最后,依据对sql优化及调优技术的分析,介绍如何快速优化sql的思路。 《oracle 高性能sql引擎剖析:sql优化与调优机制详解》内容丰富且深入,破解了oracle技术的很多秘密,适合oracle数据库管理员、应用开发人员参考。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值