博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql 优化
阅读量:6836 次
发布时间:2019-06-26

本文共 1112 字,大约阅读时间需要 3 分钟。

SQL语句中,尽量避免使用or,in关键字,因为执行效率低。

 

join > exists > in

union > or

 

select * from PIXPatient where PIXPatientTID

in (select distinct PIXPatientTID from DomainPatient where DomainPatientTID
in ( select DomainPatientTID from DomainPatient
  where PatientBirthday = '1994-01-09' or PatientBirthday = '1994-01-01'
  union select  DomainPatientTID from PersonName where FamilyName = '倪' or GivenName = '界'));

 

两种方式:

1)加索引

alter table PersonName add index Index_FamilyName (FamilyName), add index Index_GivenName (GivenName);

alter table DomainPatient add index Index_PatientBirthday (PatientBirthday);

 

2)替换or , in(效果明显)

select * from PIXPatient inner join (

    select distinct PIXPatientTID from DomainPatient inner join (
     select DomainPatientTID from DomainPatient  where PatientBirthday = '1994-01-09'
     union select DomainPatientTID from DomainPatient  where PatientBirthday = '1994-01-01'
     union select  DomainPatientTID from PersonName where FamilyName = '倪'
     union select  DomainPatientTID from PersonName where GivenName = '界' ) a using(DomainPatientTID) ) b using(PIXPatientTID) ;

 

转载于:https://www.cnblogs.com/billhuang/p/3477034.html

你可能感兴趣的文章
很好看的后台管理界面
查看>>
Maven 使用Eclipse构建Web项目
查看>>
用户密码加密存储十问十答,一文说透密码安全存储
查看>>
IL指令详细
查看>>
parted空闲空间添加分区
查看>>
Nginx 作为反向代理优化要点proxy_buffering
查看>>
折腾大半年,西部数据终于收购了东芝半导体业务
查看>>
http长连接和短连接
查看>>
送上最新鲜的互联网行业新闻-【2015-05-12】
查看>>
印花税下调,今天股市上涨概率很大
查看>>
如何描述一张数据表的基本信息?
查看>>
Linux系统下UDP发送和接收广播消息小例子
查看>>
Asp.net跨站脚本攻击XSS实例分享
查看>>
Linux系统下的单调时间函数
查看>>
美国人开发了一个有趣的网站,可以算出你被机器人抢饭碗的概率
查看>>
H.264中NAL、Slice与frame意思及相互关系
查看>>
《Linux From Scratch》第二部分:准备构建 第五章:构建临时文件系统- 5.25. Gzip-1.6...
查看>>
Spark-SparkSQL深入学习系列六(转自OopsOutOfMemory)
查看>>
在HTML下,如何为多个选择框提取数据并序列化
查看>>
还以为敏捷开发是个概念?有人已经将它变为现实了!
查看>>