用户名:automation来自1128
mysqlisn迫白只增ull用法讲解
MyS饭要径造盟罪约我日浓QL可以使用IS**LL()函数。不过它的工作方式与微软的IS**LL()函数有点不同。
线书开植备席 我们先来看几个is**llsql用法:
select*fromnewtablewherenameis来必轮扬**ll//取得newtable表中name为**ll值的所有**
select*fromtbas_tablewheretitlenotis**ll//取得tbas_table表中title字段不为**ll的所有**
再看如下语句:
**LECT`click`,`title`,`created`FROMdcfsda_tableWh**EREclicki清限款析效封snot**ll
再看如下语句:
**LECT`id`,`说然顺于过刻钱title`,`describle`FROMbnsdh_ta包火bleWh**EREdescribleisnotnull
我们可以看到此表有1025014**,其中descri问答ble列只有一条是**ll值。也就是describle列的索引会存储此列的1025014条记录的信息,只有一条没有存。在选择怎么的时候,DB2优化器会试着用这样两种方式,第一种是井布短考个车航么从表中取出每条记录,然后看它的describle值是否为空。第二种是,先从索引找到describle列所有非空的**在表中的位置,然后在扫描表时,文此爱伯马视如碰到这些位置,则不用取出**判断是否为空,直接跳到下一条记录。
isnot**ll高效率应用:
有些地方有这样的说法,isnot**ll不能利用索引,所以要将其改写成其他语句,以便能够利用索引提高效率。下面是测试情况:
S得速何清QL语句:**LECTclickFROMbsga_tableWh**EREclickisnot热**ll
改写后的SQL语句:**LECTclickFROMbsga_tableWh**EREclick>0andclick<100001
无论是IS**LL还是ISNOT**LL,并不是如网上所说的is**ll或者isnot**ll不能五慢打室机仍好食密道利用索引,而是在不同的表**结构环境下,有可能会利用索引有可能不利用索引,而决定如何执行查询的标准就是性能。
扩展阅读:
is**ll是判断值是不是**ll,用=**ll则及是跟**ll进行比较运算,而**ll跟任何值作比较运算结果都是false,也就不会有任何查询纪录。
比如你川防有条记录值是**ll,用is**ll能查出来,用=**ll就不会返回任何结果。
注:更多精彩文章请关注三联编程教程栏目。