5个让DBA爱上你的SQL技巧

 一、不要在索引列上调用Function

  这样做将会阻止数据库使用这个索引,这个问题甚至可以影响这个分区表,因为这样做的话将不会从指定的分区中读取数据,而是扫描整一个表空间。对于大数据量的数据表,这将是性能上的一场大灾难。

  不要这样做:

WHERETIME_ID+14 > to_number(to_char(sysdate,'J'))

登录后复制

  应该这样做:

WHERETIME_ID > to_number(to_char(sysdate-14,'J'))

登录后复制

 二、使用Analyze对复杂SQL的优化

  如果你不这样做,将意味着:你拒绝使用数据库的查询优化器,也失去了使用优化连接的机会。假设你创建了一张拥有100万条记录的临时表,如果不对其进行分析,那么优化器将无法从现有的线索中获取表中真正的内容,于是它只能决定使用嵌套循环连接来一行行地扫描数据表,如果数据量不大,可能我们感觉不到性能的损失,但是随着数据集的增长,你的数据库性能会越来越差。

  建议这样做:

ANALYZE TABLE  COMPUTE STATISTICS

登录后复制

 三、将复杂的SQL分成几步执行

  把SQL想象成披萨,我想你应该不会一下子将整个披萨吞到嘴里嚼烂它吧。

  对于创建一个复杂的SQL查询,我们最好将其分成3-4个步骤,SQL越简单,优化器的效果就越好,另外,对每一张数据表中的数据也越容易调试。

 四、只有在必要的时候才使用Distinct

  这是一个非常好的经验法则,Distinct经常被用在返回2条或2条以上重复记录的SQL查询中,使用Distinct,将会过滤掉重复的数据记录。但是使用Distinct的目的一定要明确,当你确定返回的记录一定是唯一的时候才能使用,比如用户id。滥用Distinct将会出现不可预知的错误,比如多表连接查询的情况。

 五、合理创建索引

  最后一点就是合理创建表索引,简单来说,假如有一张10万条记录的数据表,你可能经常会查询这样的信息:“我的某个客户信息在这张表中吗?”。如果使用了索引,那么检索这条客户信息将非常迅速,否则数据库优化器将会选择全表扫描,这在大数据量的情况下简直就是噩梦。

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

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/1653259.html

(0)
上一篇 2025年2月19日 05:57:37
下一篇 2025年2月19日 05:57:50

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • PHP7和PHP8的弃用功能

    PHP7和PHP8弃用了设计缺陷、性能低下的功能,以及被更现代化替代方案取代的功能。迁移弃用功能不仅能避免升级陷阱,还能提升代码现代性和效率。例如,mysql_*弃用后,应迁移到MySQLi或PDO;create_function()弃用后…

    2025年2月23日
    100
  • PHP7和PHP8的运行环境要求

    PHP7和PHP8的运行环境要求包括:兼容性问题、扩展库依赖关系、性能差异和安全隐患。升级前,必须进行代码测试以确保兼容性,梳理依赖关系以避免版本不匹配,以及建立测试环境以逐步升级。PHP8性能提升显著,但仍需注重代码优化。此外,还需更新安…

    2025年2月23日
    100
  • PHP7和PHP8的数据库支持差异

    PHP7和PHP8的数据库支持相比,PHP8在性能上大幅提升,执行速度提升~20%,预处理语句效率更高;还提供了异步操作等高级特性。但升级时要注意数据库驱动程序兼容性和代码修改,使用预处理语句防止SQL注入漏洞至关重要。 PHP7和PHP8…

    2025年2月23日
    100
  • phpMyAdmin 3.1.1

    phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的资料库管理工具。可以管理整个MySQL服务器(需要超级用户 phpMyAdmin 是一个以PHP为基础,以Web-Base方式架构在网站主机上的…

    数据库 2025年2月23日
    100
  • PHP7各个版本的兼容性如何

    理论上,PHP7版本向下兼容,但实际升级可能存在细微改动导致行为差异。理解兼容性需了解PHP版本命名规则、变更日志,以及Zend引擎演进。向下兼容性仅指新版本运行旧代码,但行为可能不一致。弃用函数、扩展库不兼容是常见兼容性问题。进行全面兼容…

    2025年2月23日
    100
  • MySQL V5.1发现严重BUG 或将导致数据丢失

    Sun在上周发布了MySQL数据库软件5.1版,之后他们称包括在新特性在内,该版本存在很多bug需要进行修复。据MySQL创始人Michael Wid Sun在上周发布了MySQL数据库软件5.1版,之后他们称包括在新特性在内,该版本存在很…

    数据库 2025年2月23日
    100
  • PHP7版本更新对现有项目有哪些影响

    升级到 PHP 7 带来重大性能提升和新功能,但也会产生挑战:已废弃功能被移除,需要替换。严格的类型声明要求类型匹配,避免类型错误。数组操作优化改变了某些行为,需要测试和修复。老旧扩展库与 PHP 7 不兼容,需要更新或寻找替代方案。分步升…

    2025年2月23日
    100
  • MySQL双向复制简单配置步骤

    MySQL从3.23版本起就已经内置了复制(Replication)的功能,我们可以配置成master-slave模式,也可以配置为master-master模式。方法 MySQL从3.23版本起就已经内置了复制(Replication)的…

    数据库 2025年2月23日
    100
  • Linux下MySQL-5.1.30编译安装

    1. 配置为:./configure –prefix=/home/zengyf/local/mysql-5.1.30 –enable-local-infile –with-unix-socket-path…

    数据库 2025年2月23日
    100
  • MySQL 5.0系列新的社区稳定版5.0.75发布!

    尽管MySQL 5.1已经在发布了5.1.30后GA,但显然官方并没有停止对5.0系列的开发,今早在MySQL的ftp服务器上已经放出了新的社区稳定版 尽管MySQL 5.1已经在发布了5.1.30后GA,但显然官方并没有停止对5.0系列的…

    数据库 2025年2月23日
    100

发表回复

登录后才能评论