`
luzl
  • 浏览: 561955 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

大家帮忙做做实验:like的时候‘%’的位置和是否索引扫描的关系

    博客分类:
  • DB2
阅读更多
以前有个人问过我一个问题,在查询的时候百分号的位置跟是否进行索引扫描的关系,它的答案大概是:%出现在字符串的第一个位置则不进行索引扫描,如果在中间和末尾则进行索引扫描,为了验证这个结论是否正确我在DB2中做了如下实验:
db2cmd
db2start
db2 connect to sample(如果sample数据库不存在可以用db2sampl创建)
db2 "create table test(col1 varchar(20))"
db2 "insert into test(col1) values('qooinmdfoaf00'),('adfafeee')"
db2 "create index col1 on test(col1 asc )"

db2expln -d sample -u luzl yqqlm0421 -terminal -q "select * from test where col1 like '%k'" -g

DB2 Universal Database Version 9.1, 5622-044 (c) Copyright IBM Corp. 1991, 2006
Licensed Material - Program Property of IBM
IBM DB2 Universal Database SQL and XQUERY Explain Tool

DB2 Universal Database Version 9.1, 5622-044 (c) Copyright IBM Corp. 1991, 2006
Licensed Material - Program Property of IBM
IBM DB2 Universal Database SQL and XQUERY Explain Tool

******************** DYNAMIC ***************************************

==================== STATEMENT ==========================================

        Isolation Level          = Cursor Stability
        Blocking                 = Block Unambiguous Cursors
        Query Optimization Class = 5

        Partition Parallel       = No
        Intra-Partition Parallel = No

        SQL Path                 = "SYSIBM", "SYSFUN", "SYSPROC", "SYSIBMADM",
                                   "LUZL"


Statement:

  select *
  from test
  where col1 like '%k'


Section Code Page = 1208

Estimated Cost = 0.014781
Estimated Cardinality = 0.200000

Access Table Name = LUZL.TEST  ID = 2,5
|  Index Scan:  Name = LUZL.COL1  ID = 1
|  |  Regular Index (Not Clustered)
|  |  Index Columns:
|  |  |  1: COL1 (Ascending)
|  #Columns = 1
|  #Key Columns = 0
|  |  Start Key: Beginning of Index
|  |  Stop Key: End of Index
|  Index-Only Access
|  Index Prefetch: None
|  Lock Intents
|  |  Table: Intent Share
|  |  Row  : Next Key Share
|  Sargable Index Predicate(s)
|  |  #Predicates = 1
|  |  Return Data to Application
|  |  |  #Columns = 1
Return Data Completion

End of section


Optimizer Plan:

     RETURN
     (   1)
       |
     IXSCAN
     (   2)
    /      \
 Index:  Table:
 LUZL    LUZL
 COL1    TEST


很明显,使用了索引扫描,大家再别的数据库试试,是否这个结论仅仅是传说还是,有根据呢?

分享到:
评论
1 楼 myreligion 2010-05-14  
mysql好像是:%在后面如果有索引会使用索引,%在前面不使用。

相关推荐

    Oracle数据库实验操作

    实验8:在显示的时候去掉重复的行 16 实验9:显示表的部分行和部分列,使用where子句过滤出想要的行 18 实验10:使用like查询近似的值 18 实验11:使用order by子句来进行排序操作 20 实验12:操作字符串的函数 22 ...

    sql学习 索引去哪儿_like与 %间一波三则的故事.sql

    sql学习 索引去哪儿_like与 %间一波三则的故事.sql

    防止第二个指定相同进程出现的批处理(bat)实例

    echo %m%%mm%: %mmm%%mmmm%%mmmmm%%mmmmmm% title %m%%mm%: %mmm%%mmmm%%mmmmm%%mmmmmm% SETLOCAL DISABLEDELAYEDEXPANSION echo ----Forbid The Same Task---- Ehym Personal set /p program=Please input the task...

    Android代码-LikeView

    LikeView How to use 1、To include likeview to your project: add the dependency to the the build.gradle file compile 'com.jaren:likeview:1.2.1' 2、Create likeview : create default create with ...

    Speak English Like An American.pdf 电子书非扫描版

    Speak English Like An American.pdf 电子书非扫描版,可以复制里面的内容到放到MP3

    SqlServer2016模糊匹配的三种方式及效率问题简析

    分享给大家供大家参考,具体如下: 数据库是Sqlserver 2016版 现在业务需求是:要查询出企业名称为以下几个的,XXX,XXXX等等: 第一种方式:like '%XXX%' OR like '%XXXX%' select cName from tAccountAuditing ...

    MySQL Like模糊查询速度太慢如何解决

    Like是否使用索引?  1、like %keyword 索引失效,使用全表扫描。但可以通过翻转函数+like前模糊查询+建立翻转函数索引=走翻转函数索引,不走全表扫描。  2、like keyword% 索引有效。  3、like %keyword% 索引...

    Mysql面试过关!(详解:索引+常用引擎+常见问题+sql调优)

    3.2 索引列参与了运算,会导致全表扫描,索引失效(除主键索引外) 3.3 模糊查询时(like语句),模糊匹配的占位符位于条件的首部 3.4 索引列参使用了函数 3.5 参数类型与字段类型不匹配,导致类型发生了隐式转换,...

    华为公司 java 面试题

    ......... 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 '%%' ) ...........

    CCNA课程的全部实验(包含所有pkt文件和doc文件-点击查看详细介绍).zip

    实验二:NAT和DHCP结合配置实验.doc 实验二:NAT和DHCP配置.pkt 实验二telnet远程登录路由器.pkt 实验六:OSPF的配置.pkt 实验六:PPP基本配置与认证.doc 实验六:PPP基本配置与认证.pkt 实验六:单区域OSPF配置.doc...

    api-filters:QueryString的API或Query API的模块化模块

    Projetobásico,Laravel,可重复使用的实用程序条件和QueryString。 Descrição 信息摘要,内容权和附加条件。 Utilizaçãoda classe AbstractRepository 扩展class em um存储库。 Consultas实用条件: ...

    利用reverse索引优化like语句的方法详解

    主要介绍了关于利用reverse索引优化like语句的方法,文中通过图文介绍的很详细,相信对大家具有一定的参考价值,需要的朋友们下面来一起看看吧。

    【机器人】Car-Like小车移动机器人控制实验(word报告+matlab程序代码)

    【机器人】Car-Like小车移动机器人控制实验(word报告+matlab程序代码)

    MySQL中文全文索引插件64位版本

     ①、精准度很高:采用自创的“三字节交叉切分算法”,对中文语句进行分割,无中文分词词库,搜索精准度远比中文分词算法高,能达到LIKE '%...%"的准确率。  ②、查询速度快:查询速度比LIKE '%...%"搜索快3~50倍...

    mysqlcft中文全文索引插件 32位版本

     ①、精准度很高:采用自创的“三字节交叉切分算法”,对中文语句进行分割,无中文分词词库,搜索精准度远比中文分词算法高,能达到LIKE '%...%"的准确率。  ②、查询速度快:查询速度比LIKE '%...%"搜索快3~50倍...

    MySQL学习笔记(2)——索引

    =或者会导致索引失效7.is null和is not null无法使用索引8.like以通配符%开头会导致索引失效9.字符串不加引号索引失效10.用or关键词会使得索引失效 索引简介 是什么: 帮助MySQL高效获取数据的数据结构(B树结构) ...

    python中数据库like模糊查询方式

    sql = “SELECT * FROM table_test WHERE value LIKE ‘%%%%%s%%%%'” % test_value 执行成功,print出SQL语句之后为: SELECT * FROM table_test WHERE value LIKE ‘%%public%%’ Python在执行sql语句的时候,...

    数据库相关的知识点!

    有索引的时候:创建索引的本质就是创造额外的文件,查询时先去额外的文件找,定好位置,再去原始表直接查询,提高查询速度,但是增删改的速度依然慢,创建索引后必须命中索引才有效 索引的分类 1、普通索引:加速...

    数据库实验(1-4)SQL Server 2012数据库系统

    实验一 数据定义和数据库的完整性(4学时) 一、实验目的: 1、掌握SQL的数据定义功能 熟悉SQL Server的操作界面及主要组件; 掌握使用SQL语言创建数据库、表、索引和修改表结构。 2、掌握SQL语言对数据库完整性的...

    基于Django filter中用contains和icontains的区别(详解)

    以上这篇基于Django filter中用contains和icontains的区别(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 您可能感兴趣的文章:浅谈django mode

Global site tag (gtag.js) - Google Analytics