假设有语句Select ID,Name,Status From TableA where Status=0,这里的Status是tinyint型,这张表有大约几百万条数据,其中只有大约几千条数据的Status=1,其余99%都是Status=0,那么这里查询条件写Status=0和写Status!=1,效率上有区别么
status=1的走索引(或index seek),这个是高效的
status=0的走表扫描(或index scan),数据量大的情况下相当低效。
!=1和status=0等效。这种场景下你最好分块取(比如在id上有索引),然后加个id的range条件。
你count一下试试就知道了噻,以b树的实现方式,应该是没有区别的吧
不要用不等于.不过我觉得sql应该都会把不等于改成大于小于吧.不然sql就太笨了?
执行计划是最有效的证明。这里瞎讨论都没用。
对对,如楼上所说,把两条语句都放到执行计划一看执行时间占比就明白了.
建议楼主看看SARG(searchable argument),=是 SARG,而!= 不是SARG,因此,会导致 = 使用index,而!=不使用index