sql数据库语句优化分析和优化技巧总结(sql优化工具)

通常sql数据库需要进行优化分析,并且还有一定的技巧,sql优化的几种方法这里就不做详细介绍了,本文将会sql语句优化进行总结,后面还附了优化工具SQL Tuning Expert for Oracle及使用方法,首先我们要遵随数据库优化的几个原则:

1.尽量避免在列上做运算,这样会导致索引失败;

2.使用join是应该用小结果集驱动大结果集,同时把复杂的join查询拆分成多个query。不然join的越多表,就会导致越多的锁定和堵塞。

3.注意like模糊查询的使用,避免使用%%,例如select * from a where name like ‘%de%’;

代替语句:select * from a where name >= ‘de’ and name < 'df';

4.仅列出需要查询的字段,不要使用select * from …,节省内存;

5.使用批量插入语句,节省交互;

insert into a (id ,name)values(2,'a'),(3,'s');

6.limit基数比较大时,使用between … and …

7.不要使用rand函数随机获取记录;

8.避免使用null ,这就需要在建表时,尽量设置为not null,提升查询性能;

9,不要使用count(id),而应该是count(*)

10.不要做无谓的排序,尽可能在索引中完成排序;

我们先来看一个sql:

 select                    ii.product_id,                     p.product_name,                     count(distinct pim.pallet_id) count_pallet_id,                     if(round(sum(itg.quantity),2) > -1 && round(sum(itg.quantity),2)  -1 && round(sum(itg.qoh),2) < 0.005, 0, round(sum(itg.qoh),2)) qoh,                    round(ifnull(sum(itag.locked_qoh), 0.00000),2) locked_qoh,                    p.unit_code,                    p.unit_code_name                from (select                         it.inventory_item_id item_id,                         sum(it.quantity) quantity,                         sum(it.real_quantity) qoh                     from                         ws_inventory_transaction it                    where                         it.enabled = 1                     group by                         it.inventory_item_id                      ) itg                     left join (select                                     ita.inventory_item_id item_id,                                     sum(ita.quantity) locked_quantity,                                     sum(ita.real_quantity) locked_qoh                                from                                     ws_inventory_transaction_action ita                               where                                     1=1 and ita.type in ('locked', 'release')                                group by                                     ita.inventory_item_id                                )itag on itg.item_id = itag.item_id                    inner join ws_inventory_item ii on itg.item_id = ii.inventory_item_id                     inner join ws_pallet_item_mapping pim on ii.inventory_item_id = pim.inventory_item_id                      inner join ws_product p on ii.product_id = p.product_id and p.status = 'OK'                    left join ws_product_container pc on ii.container_id = pc.container_id//总起来说关联太多表,设计表时可以多一些冗余字段,减少表之间的关联查询;                where                     ii.inventory_type = 'raw_material' and                     ii.inventory_status = 'in_stock' and                     ii.facility_id = '25' and                     datediff(now(),ii.last_updated_time) < 3  //违反了第一个原则                     and p.product_type = 'goods'                     and p.product_name like '%果%'   // 违反原则3                group by                     ii.product_id                having                     qoh < 0.005                order by                     qoh desc

 上面的sql我们在from 中使用了子查询,这样对查询是非常不利的;

更好的一种做法是下面的语句:

select                  t.facility_id,                f.facility_name,                t.inventory_status,                wis.inventory_status_name,                t.inventory_type,                t.product_type,                t.product_id,                 p.product_name,                t.container_id,                 t.unit_quantity,                 p.unit_code,                p.unit_code_name,                pc.container_unit_code_name,                t.secret_key,                sum(t.quantity) quantity,                sum(t.real_quantity) real_quantity,                sum(t.locked_quantity) locked_quantity,                sum(t.locked_real_quantity) locked_real_quantity            from ( select                         ii.facility_id,                        ii.inventory_status,                        ii.inventory_type,                        ii.product_type,                        ii.product_id,                         ii.container_id,                         ii.unit_quantity,                         ita.secret_key,                        ii.quantity quantity,                        ii.real_quantity real_quantity,                        sum(ita.quantity) locked_quantity,                        sum(ita.real_quantity) locked_real_quantity                    from                         ws_inventory_item ii                         inner join ws_inventory_transaction_action ita on ii.inventory_item_id = ita.inventory_item_id                    where                         ii.facility_id = '{$facility_id}' and                         ii.inventory_status = '{$inventory_status}' and                         ii.product_type = '{$product_type}' and                         ii.inventory_type = '{$inventory_type}' and                        ii.locked_real_quantity > 0 and                         ita.type in ('locked', 'release')                     group by                         ii.product_id, ita.secret_key, ii.container_id, ita.inventory_item_id                    having                         locked_real_quantity > 0             ) as t                inner join ws_product p on t.product_id = p.product_id                 left join ws_facility f on t.facility_id = f.facility_id                left join ws_inventory_status wis on wis.inventory_status = t.inventory_status                left join ws_product_container pc on pc.container_id = t.container_id                        group by                 t.product_id, t.secret_key, t.container_id

 注意:

1、from 语句中一定不要使用子查询;

2、使用更多的where加以限制,缩小查找范围;

3、合理利用索引;

4、通过explain查看sql性能;

使用工具 SQL Tuning Expert for Oracle 优化SQL语句

对于SQL开发人员和DBA来说,根据业务需求写出一条正确的SQL很容易。但是SQL的执行性能怎么样呢?能优化一下跑得更快吗?如果不是资深 
DBA,估计很多人都没有信心。

幸运的是,自动化优化工具可以帮助我们解决这个难题。这就是今天要介绍的 Tosska SQL Tuning Expert for Oracle 工具。

下载 https://tosska.com/tosska-sql-tuning-expert-tse-oracle-free-download/

Delphi7基础语法教程 中文WORD版 Delphi7基础语法教程 中文WORD版

Delphi是美国Borland公司推出的一种基于客户/服务器体系的Windows快速应用开发工具(RAD Rapid Application Development),是一种面向对象的可视化编程工具,即根据Delphi的可视性,又结合Object Pascal 语言的编程技巧,可以开发出功能强大的Windows应用程序和数据库应用程序。 Delphi是第一个集可视化开发环境、优化的源代码编译器和可扩展的数据库访问引擎于一身的Windows开发工具。

Delphi7基础语法教程 中文WORD版 1 查看详情 Delphi7基础语法教程 中文WORD版

本工具发明人Richard To, Dell的前首席工程师, 拥有超过20年的SQL优化经验.

1.png

1、创建数据库连接,也可以稍后创建。填好连接信息,点击 “Connect” 按钮。

如果您已经安装Oracle客户端,并且在Oracle客户端配置了TNS,可以在本窗口选择“TNS”作为”Connection Mode”,然后在”Database Alias”中选择配置好的TNS作为数据库别名。 

2.png

如果您没有安装Oracle客户端或者不想安装Oracle客户端, 可以选择“Basic Type”作为”Connection Mode”,只需数据库服务器IP, 端口和服务名即可。 

1.png

2、输入有性能问题的SQL 

1.png

3、点击Tune按钮,自动生成大量的等价SQL并且开始执行。虽然测试还没有完成,我们已经可以看到 SQL 20 的性能提升了100%。 

1.png

让我们仔细看一下SQL 20, 它使用了两个Hints, 以最快的执行速度脱颖而出。原来的SQL要0.99秒,优化后的SQL执行时间接近0秒。

 由于这条SQL每天要在数据库中执行上万次,优化后可节省大约 165秒的数据库执行时间。1.png

最后,用等价的SQL 20 替换 应用程序源代码中有性能问题的SQL。重新编译应用程序,性能得到了提高。

调优任务顺利完成!

相关文章:

Sql效能优化总结与sql语句优化篇

SQL语句优化原则,sql语句优化

相关视频:

MySQL优化视频教程—布尔教育

以上就是sql数据库语句优化分析和优化技巧总结(sql优化工具)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/891708.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月28日 15:28:04
下一篇 2025年11月28日 15:28:45

相关推荐

  • TRON (TRX)是什么?波场币的生态和孙宇晨介绍

    TRON是基于区块链的去中心化内容娱乐协议,采用DPoS机制支持高吞吐交易与智能合约,原生代币TRX用于资源质押、投票治理及价值交换;波场生态涵盖USDT主要发行链、DeFi平台Sunswap与JustLend、NFT及跨链协议BitTorrent Chain,2025年占全球USDT流通超50%;…

    2025年12月9日
    000
  • 如何为自己的加密资产做好长期规划?告别短线追涨杀跌

    做好长期规划需建立系统策略:一、采用定期定额投资(DCA),通过固定周期与金额持续买入主流币种,降低持仓成本;二、实施分阶段止盈,按预设涨幅逐步卖出仓位并设置移动止损,锁定收益;三、构建多元化组合,合理分配资金于主流币、优质项目代币与稳定币,并定期再平衡;四、严格执行仓位管理,单项目不超20%总资金…

    2025年12月9日
    000
  • 下一轮牛市的核心引擎是什么?AI、DePIN还是RWA?

    AI、DePIN与RWA将成为下一轮牛市三大引擎:AI提升链上智能与用户体验,DePIN以去中心化方式构建物理基础设施,RWA则连接传统金融与加密世界,释放万亿级资产流动性。 随着市场周期演变,寻找下一轮牛市的核心引擎成为焦点。人工智能(AI)、去中心化物理基础设施网络(DePIN)和真实世界资产(…

    2025年12月9日
    000
  • 什么是元宇宙(Metaverse)? 核心概念、龙头项目与投资逻辑深度剖析

    元宇宙是基于数字技术构建的虚拟共享空间,用户通过唯一数字身份在沉浸式环境中进行社交、工作与经济活动。其核心由身份系统、沉浸感技术、独立经济体系及低延迟交互构成;依托区块链、数字孪生、实时渲染引擎与空间计算等关键技术实现虚实融合;代表性项目如Roblox、英伟达Omniverse、Decentrala…

    2025年12月9日
    000
  • 有道词典网页版入口 有道网页版登录入口

    有道词典网页版入口为dict.youdao.com,提供精准翻译、文档翻译、屏幕划词、单词本同步、AI写作润色及云笔记等功能,支持多端登录与云端数据同步,界面简洁易用。 有道词典网页版入口在哪里?这是不少用户都关心的问题,接下来就由小编为大家带来有道词典网页版的登录入口地址,对这个工具感兴趣的朋友们…

    2025年12月9日
    000
  • 区块链和链链接关系_区块链与链链接的本质区别与联系说明

    区块链是分布式账本技术,强调数据不可篡改与去中心化共识;链链接则是实现不同区块链间数据互通的机制,注重跨链通信效率。1、区块链通过密码学连接区块并依赖共识算法维护数据一致性;2、链链接采用中继链、哈希锁定等技术打通异构网络;3、区块链安全性依赖多数节点诚实,链链接安全受制于最弱一环;4、区块链适用于…

    2025年12月9日
    000
  • 欧易OKX手机版APP下载 v6.147.0 官方版

    欧易okx手机版app下载 v6.147.0在哪里?这是不少网友都关注的,接下来由php小编为大家带来欧易okx手机版app最新版本下载地址,感兴趣的网友一起随小编来瞧瞧吧! 欧易OKX官网入口: 欧易OKX手机版APP v6.147.0 官方版下载: 平台核心功能 1、提供全球范围内的数字货币行情…

    2025年12月9日
    000
  • 币安正版App下载渠道 币安官网2025最新入口

    币安正版app下载渠道在哪里?这是不少网友都关注的,接下来由php小编为大家带来币安官网2025最新入口,感兴趣的网友一起随小编来瞧瞧吧! 币安官网2025入口: 币安正版App下载: 1、平台提供多样化的数字资产交易服务,涵盖现货、杠杆及合约等多种模式,满足不同用户的操作习惯与投资策略需求。 2、…

    2025年12月9日
    000
  • CoinMarketCap 和 CoinGecko 怎么用?查询币价和项目数据指南

    Binance币安 欧易OKX ️ Huobi火币️ gateio芝麻   首先掌握CoinMarketCap和CoinGecko的使用方法可高效获取加密货币价格与项目数据。一、在CoinMarketCap查询实时价格:访问官网后搜索代币如ETH,进入详情页查看实时价格、24小时涨跌幅、交易量及市值…

    2025年12月9日
    000
  • 以太坊(ETH)历史价格回顾 ETH价格走势K线图2025趋势预测

    Binance币安 欧易OKX ️ Huobi火币️ gateio芝麻   以太坊价格震荡下行,4小时K线显示多头力量减弱,MACD动能衰减,KDJ中性偏跌,当前关键支撑3088.0美元,阻力3259.0美元,反弹受阻后或延续跌势。 以太坊(ETH)作为市值第二大的加密货币,其价格走势受多种链上数据…

    2025年12月9日
    000
  • 斐波那契回撤线实战教学: 如何利用它精准找到支撑位与阻力位?

    斐波那契回撤线通过23.6%至78.6%等关键比率识别支撑阻力,结合趋势方向、K线形态、多时间框架共振及RSI、MACD等指标可有效确认反转信号。 binance币安交易所 注册入口: APP下载: 欧易OKX交易所 注册入口: APP下载: 火币交易所: 注册入口: APP下载: 斐波那契回撤线是…

    2025年12月9日
    000
  • 加密货币杠杆代币详解: 优势、风险与它和合约交易的根本区别

    加密货币杠杆代币通过简化操作让用户便捷获取杠杆敞口,适合短期交易但不适合长期持有。其优势在于无需管理保证金即可像现货一样交易,内置杠杆倍数自动复利调整,便于组合管理;但存在波动率拖累、持续费用侵蚀本金等风险,且与合约交易在产品形式、风险机制、费用结构和适用场景上存在本质差异,需谨慎区分使用。 bin…

    2025年12月9日
    000
  • 黄金大战以太坊是真的吗?黄金和以太坊之争的原因分析

    黄金与以太坊在避险属性和价值存储上形成对比:黄金作为传统避险资产,受地缘政治和美元信用弱化推动需求,其地位经长期验证;而以太坊虽波动较大,但在美元信用受损背景下,凭借去中心化特性及智能合约生态,正逐步被纳入非主权资产配置范畴。两者均受益于全球不确定性上升,但以太坊兼具生产性功能与技术演进潜力,不同于…

    2025年12月9日
    000
  • 加密货币市场的情绪指数是什么? 如何利用恐慌与贪婪指数指导交易?

    恐慌与贪婪指数是衡量加密市场情绪的工具,数值0-100反映恐惧到贪婪程度,通过波动性、交易量、社交媒体等多维度加权计算,指导逆向投资决策。 binance币安交易所 注册入口: APP下载: 欧易OKX交易所 注册入口: APP下载: 火币交易所: 注册入口: APP下载: 加密货币市场的情绪指数是…

    2025年12月9日
    000
  • 什么是比特币减半?它对币价有什么历史影响?

    比特币减半是每四年区块奖励减半的通缩机制,2024年第四次减半后奖励降至3.125 BTC,供应减少强化稀缺性,历史上减半后价格均大幅上涨,但2024年后市场未立即暴涨,因ETF、机构入场等新因素稀释其单一影响力。 比特币减半是其协议内置的通缩机制,约每四年将新区块产生的奖励减少一半,以此控制总供应…

    2025年12月9日
    000
  • 币安官网登录注册入口 币安Binance官方网址导航

    币安官网登录注册入口在哪里?这是不少网友都关注的,接下来由php小编为大家带来币安binance官方网址导航,感兴趣的网友一起随小编来瞧瞧吧! 币安官网注册入口: 币安Binance官方 APP下载: 平台核心功能与服务 1、提供涵盖超过三百五十种数字资产的交易市场,用户能够进行多样化的资产交换与投…

    2025年12月9日
    000
  • 币安交易所正确网址 币安官方App一键下载安装

    币安交易所正确网址是什么?这是许多用户在寻找安全交易入口时关心的问题,接下来由php小编为大家带来币安交易所的官方访问地址及app下载方式,感兴趣的用户可以继续往下了解! 币安交易所正确网址: 币安官方App一键下载: 平台访问与账户设置 1、进入官网后可选择注册或登录已有账户,注册过程需要提供有效…

    2025年12月9日
    000
  • 币安官网直接进入链接 币安Binance最新地址访问

    币安官网直接进入链接 币安binance最新地址访问在哪里?这是不少网友都关注的,接下来由php小编为大家带来币安官网直接进入链接 币安binance最新地址访问,感兴趣的网友一起随小编来瞧瞧吧! 币安官网直接进入链接: 币安Binance官方APP下载: 平台基础服务功能 1、提供涵盖多种数字资产…

    2025年12月9日
    000
  • 为什么要投资加密货币?牛市下半场入场的十大理由

    现在入场仍为时不晚,机构资金持续涌入、宏观环境利好、监管趋稳构成确定性基础;市场结构优化与山寨币价值洼地显现,叠加AI+Web3、RWA、GameFi等新叙事推动,增长潜力巨大。 加密货币交易平台推荐: 欧易OKX: Binance币安: 火币Huobi: Gateio芝麻开门: 加密货币牛市进程过…

    2025年12月9日
    000
  • 虚拟货币指数有哪些?如何创建与追踪自己的加密货币指数

    虚拟货币指数可以帮助投资者综合衡量市场整体表现或特定资产类别走势。了解主流虚拟货币指数以及如何创建和追踪自己的指数,对于构建投资策略和管理资产具有重要意义。 主流虚拟货币指数介绍 目前市场上常见的虚拟货币指数包括: BTC指数:以比特币价格为主,反映比特币整体市场走势。ETH指数:以以太坊为核心,衡…

    2025年12月9日
    000

发表回复

登录后才能评论
关注微信