MySQL中的and 与 or连用

MySQL中的and 与 or连用,第1张

项目中可能回遇到or 与  and  连用,我认为or连接的前后是两个条件.所以不能一个条件分开写.

比如 一张表a  有 user_code,shared,del,company_id四个字段  我想查shared=1 且 del=0 或者del=0的数据 且company_id=1, shared是共享的意思,不区分公司,那么可以这样写

例  select  user_code from a where shared=1  and del=0 or del=0

数据库中定义个int型字段比如col

abc与或之后的结果 赋值给col即可。

读取的时候直接读取。

&&可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。

比如:

int a1 =1,b2=2,c3=3

System.out.println((a1==b2)&&(b2==c3))

结果即为:false

2020-02-27

最近一个日志页面查询很慢,然后去跟踪了查询sql,发现日期字段上即使建了索引,查询还是很慢,执行语句还是使用了全表扫描,于是继续分析下去。

查询语句类似:

select * from logs where createtime >= '2020-01-01'

起初因为date上没检索,查询执行的是全表扫描,给条件字段createtime建上索引:

再次执行:

查询执行的还是全表扫描:

网上查询有说是因为在查询数据条数约占总条数五分之一以下时能够使用到索引,但超过五分之一时,使用全表扫描。于是把日期范围缩小:

果真,查询执行的是range:

由此可知,在进行范围查询时,比如:>、<、>=、<=等, 如果数据量过大的话,即使where条件字段已经建立了索引,查询语句执行时还是有可能进行全表扫描的。

实际上是不是全表的五分之一以下才会使用索引,这个不能确定,以后再研究了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/8328803.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-15
下一篇 2023-04-15

发表评论

登录后才能评论

评论列表(0条)

保存