SQL 一个【OR】语句如何让整个系统垮掉

摘要:
我们先不谈OR对数据库性能的致命性。将来,如果在线项目是一个包含大量数据的表,则不能使用OR进行查询。今天,当工作时,有SQL事务,并且一个非常重要的表被锁定,整个系统开始变得很混乱。之后,一个查询持续16秒,我在5秒内检查了JK_ Customer表中的数据:有300多万条数据。主键必须有索引是很好的。如果您想快速查询,情况不会改变。很明显,手术室损坏了我的索引。

     关于 数据库  or   的用法,就不说了     讲讲OR对数据库性能有多大的杀伤力,以后线上的项目如果是数据量很大的表,一定不要用OR来查询

     今天在工作的时候,同事遇到了SQL优化的问题,有SQL事务,锁了一张很主要的表,整个系统都开始拉胯,一卡一卡的。。

            让我帮忙看看,之后一个长达16秒的查询,优化到不到一秒     

    SQL: SQL 一个【OR】语句如何让整个系统垮掉第1张

用时:五秒    SQL 一个【OR】语句如何让整个系统垮掉第2张

我检查一下   JK_Customer  这张表的数据, 有三百多万条数据    还好

SQL 一个【OR】语句如何让整个系统垮掉第3张

主键是肯定有索引的    想查询快的话,加索引呗

加索引后: 情况没有变化   SQL 一个【OR】语句如何让整个系统垮掉第4张

这情况就很明显了,OR这个玩意儿  破坏了我的索引:我来试试分开查询

SQL 一个【OR】语句如何让整个系统垮掉第5张

 瞬间完成,OK 。。

事实证明了,OR破坏了的我的索引  导致查询变慢了  

 那么我们就不要怕麻烦  用UNION ALL来代替我们的OR

总结: or会破坏索引 

   SQL 一个【OR】语句如何让整个系统垮掉第6张

 如果A表很大的情况下,应改成: 

SQL 一个【OR】语句如何让整个系统垮掉第7张     

免责声明:文章转载自《SQL 一个【OR】语句如何让整个系统垮掉》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇重写equals方法elementUI的table表头与内容错位的解决方案下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

C++编译器符号表有哪些内容?(转帖)

原帖地址:http://blog.csdn.net/abortexit/archive/2007/04/24/1583306.aspx很早就想写一篇关于符号表的学习小结,可是迟迟不能下笔。其一是因为符号表在编译器的设计中占有举足轻重的地位【我们在学习编译原理的时候更多的是注重principles,而没有关心一个编译器的实现,所以符号表讲解的也比较少】,编译...

【数据泵】EXPDP导出表结构

【数据泵】EXPDP导出表结构(真实案例) BLOG文档结构图         因工作需要现需要把一个生产库下的元数据(表定义,索引定义,函数定义,包定义,存储过程)导出到测试库上,本来以为很简单的,可是做的过程发现很多的问题,现记录如下,希望有同样需要的朋友不要再走弯路了。     导读 各位技术爱好者,看完本文后,你可以掌握如下的...

K3 WISE常用数据表

K3/Wise 常用表单: 以下是转载内容,原文林枫山博客地址:https://www.cnblogs.com/star-studio/p/3737402.html 在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单。 ----------------系统设置------------------------...

goldengate 12c 12.2 新特性(updated)

GoldenGate 12.2已经提供下载,增加了不少新特性1. 异构配置加强不在需要sourceDefs和AssumeTargetDefs文件,在队列文件中已经包含metadata信息,比如table name, column name, column type等,进一步降低OGG在异构环境下配置的工作量;2. 内置心跳表在早期的OGG版本中,如果要监控...

id 自增------删除数据后恢复到删除前自增id

删除数据后,执行下面语句:      ALTER TBALE TableName AUTO_INCREMENT=1 mysql删除比较 一、DROP   drop  table tablename     绝招:删除内容和定义,释放空间。简单来说就是把整个表去掉.以后要新增数据是不可能的,除非新增一个表 二、TRUNCATE   truncate tabl...

mysql 临时表的好处

客户端新建了一个会话,这个会话只是服务器与客户端1对1的关系,客户端可能在服务端建立一个临时表,满足客户端处理某些事务的需求,当客户端退出会话后,这个临时表自动drop,没有任何数据信息占用数据库空间。这是第一个优点:省空间。客户端建立临时表只为特定的事务服务,这个表具有专用和私有性,不需要共享给其他人。所以就具备第二个优点:私密性。客户端建立的临时表具有...