1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字

1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。

2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num is null

可以在num上设置默认值0,,确保表中num列没有null值,然后这样查询:

select id from t where num=0

3.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。

4.应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:

select id from t where num=10 or num=20

可以这样查询:

select id from t where num=10

union all

select id from t where num=20

5.in 和 not in 也要慎用,否则会导致全表扫描,如:

select id from t where num in(1,2,3)

对于连续的数值,能用 between 就不要用 in 了:

select id from t where num between 1 and 3

6.下面的查询也将导致全表扫描:

select id from t where name like '%abc%'

若要提高效率,可以考虑全文检索。

7.如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:

select id from t where num=@num

可以改为强制查询使用索引:

select id from t with(index(索引名)) where num=@num

8.应尽量避免在 where 子句中对字段进行表达式操作,这将导致引擎放弃使用索引而进行全表扫描。如:

select id from t where num/2=100

应改为:

select id from t where num=100*2

9.应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。如:

select id from t where substring(name,1,3)='abc'--name以abc开头的id

select id from t where datediff(day,createdate,'2005-11-30')=0--‘2005-11-30’生成的id

应改为:

select id from t where name like 'abc%'

select id from t where createdate>='2005-11-30' and createdate

本文原创发布php中文网,转载请注明出处,感谢您的尊重!

php查询oracle大量数据,Oracle 百万行数据查询优化相关推荐

  1. excel处理几十万行数据_EXCEL的重生!处理百万行数据竟如此简单

    EXCEL处理大数据的能力一向是饱受诟病,就拿几十万行的数据来说吧,如果要在EXCEL里打开这么大的文件,少说都要几分钟,万一中间出现了卡死,又要重新来一遍,会把人折磨的不要不要的.所以为了可以处理更 ...

  2. 尴尬!EXCEL百万行数据量就歇菜了,还是这个方法实用

    前段时间发生了一个尴尬的新闻,据英国媒体报道,英国的卫生部门公开承认由于"技术故障"问题导致新冠病例的统计数据出现了失误,遗漏了将近16000个病例,英国公共卫生部临时首席执行官迈 ...

  3. MySQL 数百万行数据条件查询优化

    MySQL 数百万行数据条件查询优化   最近在公司实习做到一个项目,要在一个包含数百万行数据表(如果以日期来分类,大概是同一天里又十多万行数据)之中查询出日期在某个日期查询出与之相邻日期的那些行的结 ...

  4. win10+mysql慢_Win1064位下mysql插入百万行数据耗时问题

    performance - Inserting 1 Million records is taking too much time MYSQL - Stack Overflow https://sta ...

  5. SQL工具性能实测:居然比Navicat还快,数百万行数据导出仅51秒

    如今的SQL语言逐渐成为职场人士必备的能力.为了让更多SQL用户有一款免费又好用的SQL工具,麦聪软件于2023年1月初发布了一款Web版SQL工具SQL Studio,一经推广就赢得了众多用户的注册 ...

  6. linux百万行数据加分页符,百万级数据量报表全量导出

    java中使用poi导出Excel详解java当初把核心处理设成Unicode,带来的好处是代码适应了多语言环境.然而由于老外的英语只有26个字母,有些情况下,一些程序员用8 位的byte处理,一不小 ...

  7. opencv2 取二进制数据_百亿数据量下,掌握这些Redis技巧你就能Hold全场

    程序猿DD 一.Redis封装架构讲解 实际上NewLife.Redis是一个完整的Redis协议功能的实现,但是Redis的核心功能并没有在这里面,而是在NewLife.Core里面. 这里可以打开 ...

  8. oracle spool 分隔符_Oracle spool导出数据

    Oracle spool导出数据 freezingsun 2月 7, 2014 Oracle spool导出数据已关闭评论 在工作中,有时需要将表中的数据查询出来,保存成txt格式或者csv格式,以便 ...

  9. excel处理几十万行数据_神奇吗?仅需4步,轻松在Excel处理300万行数据

    原标题:神奇吗?仅需4步,轻松在Excel处理300万行数据 这场软件PK,是时候分出胜负了,今天就是大结局.有必杀技在手,Excel已经看到了胜利的曙光. 在99%的人眼中,Excel能处理的最大数 ...

最新文章

  1. 2018年科技公司融资纪录十大排行榜!中国四家公司上榜
  2. Android Studio 快捷键使用说明
  3. nyoj 61 传纸条(一) (双线动归)nyoj 探寻宝藏
  4. CodeForces - 1295B Infinite Prefixes(数学)
  5. 四、物理优化(1)范式化
  6. 生产者消费者之阻塞队列版本
  7. 2018级软件秋季总结
  8. AndroidStudio_安卓原生开发_Android开发中界面调试很别扭? 设置应用屏宽屏高_应用大小_design_width_in_dp---Android原生开发工作笔记140
  9. linux 下 sudo 指令不需要输入密码的配置
  10. \r \n \r\n的区别
  11. elastic-job和xxl-job实践对比
  12. 【备忘】【No37】LAMP兄弟连李明老师讲Linux
  13. python语言mooc作业_计算机基础(Ⅱ)Python语言-中国大学mooc-试题题目及答案
  14. 金仓数据库学习笔记(一)
  15. Python实现身份证号码合法性校验
  16. Wireshark抓取VLAN包
  17. 个人如何申请注册公司邮箱?企业邮箱注册申请流程详解
  18. 软件工程之高质量代码(编码规范)
  19. 程序员必知的 89 个操作系统核心概念
  20. R语言绘制heatmap热图

热门文章

  1. Swift5.x使用纯代码创建NavigationTab控制器设置启动图Wb第1部分
  2. 计算机信息安全专业欧洲排名,美国大学信息安全专业排名TOP10一览 加州大学伯克利分校居首...
  3. python 变量类型注释_变量类型、命名规则及代码注释
  4. python获取系统当前时间并转utc时间为绝对秒数_用Python将datetime.date转换为UTC时间戳...
  5. python第三章上机实践_《机器学习Python实践》读书笔记-第三章
  6. Android开发之微信支付获取签名小工具分享
  7. Android文件存储方式之openFileOutput与获取数据openFileInput
  8. 获取手机信息(UIDevice、NSBundle、NSLocale)
  9. iOS Cookie学习(NSHTTPCookieStorage的使用)
  10. java达达租车接口_Java第一个项目——达达租车系统v1