两种查询的疑惑

来源:百度知道 编辑:UC知道 时间:2024/06/05 09:17:51
select * from table

select * from table
where name like ’%%’ and addr like ’%%’
and (1_addr like ’%%’ or 2_addr like ’%%’
or 3_addr like ’%%’ or 4_addr like ’%%’ )
有什么不同
的检索结果为何不同?
性能差异
分别用于什么情况采用那种方式?

我不同意上面两位的说法,通配符%匹配任意长度任意字符,但是不匹配null,所以根据你的句子看看他检索出来的是哪些可以为空哪些不可以为空的条目

第一个是选择整个表里面的内容输出,显示。
第二个从第二行开始就是对输出内容的限制了~
有了限制之后内容自然和不会相同。
性能差别不大,都是简单的查询。
情况就根据你需求了,需要所有数据,就用前者,需要特殊数据就用后者。

select * from table
第一句查询 table表中所有列的所有信息

select * from table
where name like ’%%’ and addr like ’%%’
and (1_addr like ’%%’ or 2_addr like ’%%’
or 3_addr like ’%%’ or 4_addr like ’%%’ )
第二句是查询table中 符合where条件的语句
name like ’%%’ and addr like ’%%’
and (1_addr like ’%%’ or 2_addr like ’%%’
or 3_addr like ’%%’ or 4_addr like ’%%’ )

按照这两条语句来看。结果是相同的
性能的差异是第一条比第二条快
越多数据相差越明显

但是第一条查询的是全部条目
第二条查询的是根据条件查询
本次结果一样是因为你的条件全部都是任意字符。只要你列名没错就会把所有条目都查询出来。

总结
2种情况

第一句是用于查询所有信息

第二句是用于根据条件筛选信息。

严重同意
回答者:林彦君 - 初入江湖 三级
的答案

这是检测 null 的

同意3楼的,这不仅仅是一个速度的问题,要包括NULL的考虑