首页 > 语言 > 关键词  > 编写最新资讯  > 正文

如何正确编写高质量高性能的MySQL语法

2008-11-27 15:49 · 稿源:赛迪网技术社区

在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的编写,刚开始不会体会出SQL语句各种写法的性能优劣,但是如果将应用系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可达到上百倍,可见对于一个系统不是简单的能实现其功能就可以了,而是要写出高质量的SQL语句,提高系统的可用性。

在多数情况下,Oracle使用索引来更快的遍历表,优化器主要根据定义的索引来提高性能。但是,如果在SQL语句的where子句中写的SQL代码不合理,就会造成优化器删去索引而使用全表扫描,一般就这种SQL语句,被称为劣质的SQL语句。在编写SQL语句时我们应清楚优化器根据何种原则来删除索引,这有助于写出高性能之SQL语句。

下面就某些SQL语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的SQL,系统在运行该SQL语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速度之极大降低。

1. IS NULL 与 IS NOT NULL

不能用null作索引,任何包含null值的列都将不会被包含在索引中。即使索引有多列这样之情况下,只要这些列中有一列含有null,该列就会从索引中排除。也就是说如果某列存在空值,即使对该列建索引也不会提高性能。

任何在where子句中使用is null或is not null的语句优化器是不允许使用索引的。

2. 联接列

对于有联接的列,即使最后的联接值为一个静态值,优化器是不会使用索引的。我们一起来看一个例子,假定有一个职工表(employee),对于一个职工之姓和名分成两列存放(FIRST_NAME和LAST_NAME),现在要查询一个叫比尔.克林顿(Bill Cliton)的职工。

下面是一个采用联接查询的SQL语句,

上面这条语句完全可以查询出是否有Bill Cliton这个员工,但是这里需要注意,系统优化器对基于last_name创建的索引没有使用。

当采用下面这种SQL语句来编写,Oracle系统就可以采用基于last_name创建的索引。

遇到下面这种情况又如何处理呢?如果一个变量(name)中存放着Bill Cliton这个员工之姓名,对于这种情况我们又如何避免全程遍历,使用索引呢?可以使用一个函数,将变量name中的姓和名分开就可以了,但是有一点需要注意,这个函数是不能作用在索引列上。下面是SQL查询脚本:

3. 带通配符(%)的like语句

同样以上面的例子来看这种情况。目前的需求是这样的,要求在职工表中查询名字中包含cliton的人。可以采用如下的查询SQL语句:

这里由于通配符(%)在搜寻词首出现,所以Oracle系统不使用last_name的索引。在很多情况下可能无法避免这种情况,但是一定要心中有底,通配符如此使用会降低查询速度。然而当通配符出现在字符串其他位置时,优化器就能利用索引。

举报

  • 相关推荐
  • 独家对话萨洛蒙:品牌的“高质量增长”是如何实现的

    自北上广深,到四五线县城,如今中国极少有年轻消费者,能够在人群不断外延的运动户外热潮中做到“片叶不沾身”——即使你没有参加过越野跑、马拉松,但也很可能在某次聚会中加入徒步、登山的行程;哪怕是十几分钟的Citywalk,也可以满足轻户外、轻运动、轻自然体验的需要…… 不难发现,无论门槛高还是低、专业属性是强还是弱,只要加入这些运动户外活动,消费者

  • “快、准、稳”指挥调度|MAXHUB亮相首届气象经济博览会,助力气象经济高质量发展

    首届中国气象经济博览会在合肥开幕,聚焦"气象融入新经济"主题,吸引80余家企业参展。MAXHUB展示超融合+AI+国产化技术方案,推出"快准稳"应急指挥系统,实现多级态势同步感知和精准指令传达。展会特设气象经济科技专区,响应《气象高质量发展纲要》要求。MAXHUB基于8年技术沉淀,构建覆盖"部-省-市-县-现场"五级联动的气象应急协作平台,支持7大视频会议系统接入,采用国产芯片确保系统稳定。其AI技术深度融入会商研判全流程,实现实时翻译、智能纪要等功能,助力气象灾害快速响应。未来将拓展技术至金融、医疗等领域,推动产业数字化转型。

  • 存力中国行正式启动,多方共探存力高质量发展新路径

    文章概述了全球数字经济发展背景下,存储技术作为新型基础设施的战略价值。"存力中国行"活动在广东启动,汇聚政产学研各界探讨存储产业发展趋势。中国信通院指出,我国存储规模已达1580EB,但面临核心技术突破等挑战。华为等企业展示了全闪存、分布式存储等技术在医疗、政务等领域的应用实践,强调国产化存储生态建设。活动通过实地调研华银康集团、广电平云等案例,呈现存储技术赋能行业数字化转型的成效,推动数据要素价值释放。

  • 东融助贷2025A精英峰会圆满收官 战略赋能驱动高质量发展

    7月5日,东融助贷在苏州举办2025A精英峰会,集团高管及60余名业务骨干参会。董事长胡玉建分析行业趋势,提出未来将在品牌、市场、科技三方面发力,打造"强势品牌"。副董事长侯鹏健强调企业文化对团队凝聚的重要性,纪检中心总经理王达鑫警示合规经营。会议围绕战略规划、团队建设等主题展开交流,多位业务骨干分享实战经验。活动旨在通过知识赋能提升团队专业能力,推动建设学习型组织,为集团高质量发展注入新动能。(140字)

  • 透明风潮席卷电竞圈,科思创发布高性能透明阻燃聚碳酸酯系列

    文章探讨了透明设计在消费电子产品中的回归热潮,从游戏手柄到机箱、散热系统和RGB键盘,透明美学成为新一代玩家的新宠。透明设计不仅唤起人们对经典设计的情感共鸣,更让硬件性能"可视化",成为科技体验的一部分。材料制造商科思创推出的高性能透明阻燃聚碳酸酯解决方案,在保持高透明度的同时实现优异阻燃性和机械性能,平衡了美学与安全性。该材料适用于电竞设备、笔记本等产品,通过薄壁设计提升便携性,并支持多样化外观需求,为电子产品的可视化革命提供技术支持。

  • 微星PAG 系列电源上市!ATX 3.1 金牌全模组 助力暑假高性能装机

    微星科技推出全新PAG G850/750/650LS PCIE5系列电源,专为高性能平台打造,符合ATX3.1规范,支持PCIe5.1原生接口,售价349元起。关键亮点:1)采用ATX3.1标准设计,可承受2倍整机功耗和3倍显卡功耗的瞬时峰值;2)配备16-Pin PCIe5.1接口,最高单接口输出600W;3)创新异色设计接口,便于判断插头是否插牢;4)通过80PLUS金牌认证,转换效率达90%;5)提供六重保护机制,确保安全稳定。该系列电源为新一代CPU和显卡提供强劲动力支持,是暑期装机的高性价比之选。

  • 大金不含氟防水防油剂,开拓高性能表面机能材的可持续未来

    大金公司推出UNIDYNE无氟防水防油剂系列产品,通过创新技术为纺织品和食品包装提供卓越的表面防护。该系列产品采用特殊乳化技术,在保持材料透气性和柔软触感的同时,实现优异的防水性和耐洗性。其中XF系列适用于各类纺织品,XP系列则专为食品包装设计,具有耐热耐油特性,且50%以上成分为天然来源,获得多项国际环保认证。产品不仅解决了日常防水防油需求,更通过可回收纸浆模塑餐盒等应用,推动绿色包装发展,助力实现健康、舒适与环保的生活方式。

  • 可灵AI全系模型上线“视频音效”功能 可同步生成高质量立体声音效

    可灵AI宣布全系列视频模型上线“视频音效”功能,用户在使用可灵AI进行视频创作时,不仅能获得高质量的视频画面,更能体验到与视频精准匹配、富有空间感的立体声音效……

  • 东北大米的“超级芯片” 小禾清风“星粳10号”实现高质高产兼得

    黑龙江农业厅审定通过193个水稻新品种,其中"星粳10号"表现突出,亩产达598公斤,食味值居前三甲。该品种由"小禾清风"品牌采用,兼具高产与优质特性,打破"优质米难高产"行业瓶颈。"星粳10号"依托"星粳"系列卓越基因,实现产量与口感协同突破,亩产远超行业标准,整精米率达68.2%,食味综合评分90分,具有软硬适中、弹糯兼备的绝佳口感。品牌通过"良种+良法"种植方案和"耘稻一号"免追肥技术,构建从育种到餐桌的全产业链质量控制体系,确保大米营养与风味。目前已在沈阳建立体验馆,与百余家商超、餐饮品牌合作,形成区域消费服务网络。

  • 忆联 Docker+MySQL 流控方案:打造安全高效存储底座,释放 AI 极致性能

    文章探讨了在AI时代背景下,基于Docker部署MySQL数据库的高效解决方案。通过Docker容器化技术,MySQL实现了灵活部署、资源高效利用和稳定隔离性,成为AI应用的首选数据库方案。测试结果显示,采用PCIe5.0企业级SSD配合Namespace技术和QoS优化策略,能精准控制性能偏差在2%以内,在混合读写场景下更可控制在1%以内。该方案显著提升了存储资源管理效率,为AI应用提供稳定可靠的数据存储支持,同时降低企业TCO成本,推动数据价值释放。