sql中用in查询走不走索引? [问题点数:40分,结帖人zsdsywr123]

Bbs1
本版专家分:0
结帖率 100%
Bbs9
本版专家分:63717
版主
Blank
GitHub 绑定GitHub第三方账户获取
Blank
进士 2017年 总版技术专家分年内排行榜第八
Blank
优秀版主 2016年10月优秀大版主
优秀小版主
Blank
银牌 2017年1月 总版技术专家分月排行榜第二
Bbs1
本版专家分:0
Bbs9
本版专家分:63717
版主
Blank
GitHub 绑定GitHub第三方账户获取
Blank
进士 2017年 总版技术专家分年内排行榜第八
Blank
优秀版主 2016年10月优秀大版主
优秀小版主
Blank
银牌 2017年1月 总版技术专家分月排行榜第二
Bbs1
本版专家分:0
Bbs6
本版专家分:9985
Blank
黄花 2016年12月 Oracle大版内专家分月排行榜第二
2016年11月 Oracle大版内专家分月排行榜第二
2016年10月 Oracle大版内专家分月排行榜第二
2013年7月 Oracle大版内专家分月排行榜第二
Blank
蓝花 2013年5月 Oracle大版内专家分月排行榜第三
Oracle 索引失效的七大限制条件
oracle <em>索引</em>失效
oracel 字段不走索引
用oracle做全表<em>查询</em>时发现一个问题,如果数据库某个varchar2类型的字段建了<em>索引</em>,但是<em>查询</em>的时候扔进入的值是long或integer类型的数据,oracle会不走<em>索引</em>,oracle会对传入的参数做to_char()处理,所以不会走<em>索引</em>。 走<em>索引</em>如果参数不是字符串类型,而是数字类型,则不走<em>索引</em>。走<em>索引</em> select t.username,t.userpassword,t.sex,t.add
Oracle不走索引的原因
Oracle数据库操作中,为什么有时一个表的某个字段明明有<em>索引</em>,当观察一些语的执行计划确不走<em>索引</em>呢?如何解决呢?本文我们主要就介绍这部分内容,接下来就让我们一起来了解一下  .        不走<em>索引</em>大体有以下几个原因:        你在Instance级别所用的是all_rows的方式        你的表的统计信息(最可能的原因)        你的表很小,上文提到过的,Oracle的优化器...
Oracle执行计划不走索引的原因总结
在Oracle数据库操作中,为什么有时一个表的某个字段明明有<em>索引</em>,当观察一些语的执行计划确不走<em>索引</em>呢?如何解决呢?本文我们主要就介绍这部分内容,接下来就让我们一起来了解一下。   不走<em>索引</em>大体有以下几个原因:   你在Instance级别所用的是all_rows的方式   你的表的统计信息(最可能的原因)   你的表很小,上文提到过的,Oracle的优化器认
oracle 不走索引的原因
create table tb2 as select * from emp; alter table tb2 modify empno number(4) not null; 翻到20W行 create index idxtb21 on tb2(empno); select INDEX_NAME from dba_indexes where table_name='TB2';--验
like走不走索引
[code=<em>sql</em>]rncreate index in_tianya_user on t_tianya_user(eml)rnselect * rnfrom t_tianya_user rnwhere eml like 'dcl%'rn[/code]rnrnrn经SQLServer 2005验证,like是走<em>索引</em>的,为什么论坛都说不走<em>索引</em>?
SQL不走索引的情况
1、有应用于谓词的函数 2、数据类型不匹配 3、统计信息陈旧 4、列可能包含空值 5、使用<em>索引</em>实际上比不使用<em>索引</em>更慢
什么样的sql不走索引
什么样的<em>sql</em>不走<em>索引</em> 要尽量避免这些不走<em>索引</em>的<em>sql</em> SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不会使用<em>索引</em>,因为所有<em>索引</em>列参与了计算 SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) 1990; -- 不会使用<em>索引</em>,因为使用了函数运算,原理与上面相同 SELECT * FROM `h
MySQL in不走索引
优化前SELECT*  FROM erp_helei mg WHERE mg.num = 602   AND mg.pid   IN   (10002559,10002561,10002562,10002563,10002564,10002598,10002599,10002600,10002601,10002602,10002603,10002604,10002648,10002649,1000...
怎么不走索引
有两个表rnuser_notice(nid number primary key,user_id number,notice_info varchar2(10));rnsubscription(subscriber number,subscribed number,primary key(subscriber,subscribed ))rnrn我在user_notice.user_id 上创建了一个<em>索引</em>rn现在我要查 rnselect * from user_notice s where exists (select null from subscription c where c.subscriber=1715 and s.user_id = c.subscribed )rn为什么他对user_notice要全表扫描,而不走<em>索引</em>?rnselect * from user_notice s where exists (select null from subscription c where s.user_id = c.subscribed and c.subscriber=1715) 也是一样
mysql优化,导致查询不走索引的原因总结
最近公司让我做SQL优化的工作,用explain发了一些问题。常见的像OR ,IN,>= ,或者是嵌套等导致<em>索引</em>失效,导致<em>查询</em>性能降低的问题在这里就不做陈述了,网上的文章一搜一 大片。我只是写点个人工作中遇到的,网上不好搜索的,但是不保证所有的场景都试用,后续我还会更新。 1、order by 和 limit 结合使用,如果where 字段,order by字段都是<em>索引</em>,那么有limit<em>索引</em>会使
SQL IN 一定走索引吗?
摘要 IN 一定走<em>索引</em>吗?那当然了,不走<em>索引</em>还能全部扫描吗?好像之前有看到过什么Exist,IN走不走<em>索引</em>的讨论。但是好像看的太久了,又忘记了。哈哈,如果你也忘记了MySQL中IN是如何<em>查询</em>的,就来复习下吧。 问题 问题要从之前的统计店铺数关注人数说起 SELECT shop_id, count(user_Id) as attentionNumber FROM shop_attention WHE...
ORACLE 不走索引(失效)的原因以及解决办法
今天在做程序的时候发现原先写的<em>索引</em>竟然莫名奇妙地失效了。去找了一下大概原因如下,做了分析心得写上,希望能帮助大家 首先了解失效<em>索引</em>的原因   1,   2,单独的>,   3,like "%_" 百分号在前.  4,表没分析.  5,单独引用复合<em>索引</em>里非第一位置的<em>索引</em>列. 6,字符型字段为数字时在where条件里不添加引号. 7,对<em>索引</em>列进行运算.需要建
Sql Server查询性能优化之索引篇【推荐】
Sql Server<em>查询</em>性能优化之<em>索引</em>篇 <em>索引</em>基础知识 聚集<em>索引</em>和非聚集<em>索引</em> <em>索引</em>碎片 <em>索引</em>设计指南
哪些sql语句不会执行索引
1、<em>查询</em>谓词没有使用<em>索引</em>的主要边界,换句话说就是select *,可能会导致不走<em>索引</em>。 比如,你<em>查询</em>的是SELECT * FROM T WHERE Y=XXX;假如你的T表上有一个包含Y值的组合<em>索引</em>,但是优化器会认为需要一行行的扫描会更有效,这个时候,优化器可能会选择TABLE ACCESS FULL,但是如果换成了SELECT Y FROM T WHERE Y = XXX,优化器会直接去<em>索引</em>中...
查询到底走不走索引
CREATE TABLE zichaxuntest ( a int(11) NOT NULL, b varchar(255) DEFAULT NULL, c varchar(255) DEFAULT NULL, d varchar(255) DEFAULT NULL, PRIMARY KEY (a), KEY bIndex (b) USING BTREE ) ENGINE=InnoDB DEFAU...
Oracle CBO是如何判断查询走不走索引的?
我们知道一个结论,一般的,在Oracle Btree<em>索引</em>中,如果<em>索引</em>列的可选择性很好,而你谓词条件过滤后的结果集极小,那么Oracle将通过<em>索引</em>很快的找到这条数据。rn那么有一个问题,Oracle的CBO在<em>查询</em>之前,是怎么知道你最终返回的结果集是有多大呢? CBO是如何计算这个成本的呢?rn举个栗子~rn[code=<em>sql</em>]rncreate table dba_object_testIndex as select * from dba_objects t ;rnupdate dba_object_testIndex t set t.object_id = 40000 where t.object_id > 40000 ;rn[/code]rn我创建的[code=<em>sql</em>]dba_object_testIndex[/code] 表中,大约有8W条记录,然后我将object_id>40000的记录的object_id全部更新为40000,那么这个时候,我在object_id上建立btree<em>索引</em>。那么这个时候,如果我去<em>查询</em>rn[code=<em>sql</em>]SELECT * FROM dba_object_testIndex T WHERE T.OBJECT_ID = 1000[/code]时,走INDEX_RANGE_SCAN显然是最合适的执行计划,而对于rn[code=<em>sql</em>]SELECT * FROM dba_object_testIndex T WHERE T.OBJECT_ID = 40000[/code]时,走TABLE_ACESS_FULL肯定是最好的选择,因为这个<em>sql</em>差不多取出了整个表一半的数据。rn并且正确的收集统计信息后,CBO也确实是如此走的执行计划~ rn那么,CBO是如何知道在OBJECT_ID = 40000时,要走全表扫描,而输入别的object_id时,走<em>索引</em>范围扫描呢?rn如果说是有公式计算?那是如何计算的呢?
这个查询为什么不走索引
数据库是MySQL 5.7.10,InnoDB引擎,建了空间<em>索引</em>, 但是<em>查询</em>的时候没有走该<em>索引</em>,为什么?rn建表语句如下:rn[code=<em>sql</em>]CREATE TABLE `geo` (rn `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT,rn `geo` GEOMETRY NOT NULL,rn PRIMARY KEY (`id`),rn SPATIAL INDEX `geo` (`geo`)rn)rnCOLLATE='utf8mb4_general_ci'rnENGINE=InnoDBrnAUTO_INCREMENT=1[/code]rnrn插入了一些数据rn[code=<em>sql</em>]insert into geo(geo) values(ST_GeomFromText('POINT(108.875000 34.216020)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.569098 36.646357)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.550988 36.633384)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.472800 36.624116)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.487460 36.563614)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.532016 36.686191)'));rninsert into geo(geo) values(ST_GeomFromText('POINT(109.319010 36.987505)'));[/code]rnrn创建一个多边形rn[code=<em>sql</em>]SET @g3 = ST_GeomFromText('Polygon((108 36.5,108 36.7,109.5 36.7,109.5 36.5,108 36.5))');[/code]rnrnexplain如下:rn[code=text]my<em>sql</em>> explain select st_x(geo),st_y(geo) from geo where mbrcontains(@g3,geo)>0\Grn*************************** 1. row ***************************rn id: 1rn select_type: SIMPLErn table: georn partitions: NULLrn type: ALLrnpossible_keys: NULLrn key: NULLrn key_len: NULLrn ref: NULLrn rows: 8rn filtered: 100.00rn Extra: Using wherern1 row in set, 1 warning (0.00 sec)[/code]
Sql Server 2008——查询(3)——IN的用法
在SQL server 2008中,In的用法也是相当重要的。它<em>查询</em>的是若干个孤立的值。下面我以几个例子说明一下。 --<em>查询</em>工资在1500,3000和5000的三种的工资 select * from emp wheresal in(1500,3000,5000) --等价于 select * from emp wheresal =1500 or sal =3000 or
IN里的值过多时会造成Oracle不用索引
A表里有10w条记录,主键名为id select name from A where id in(.....) 如果只是100来个,会用<em>索引</em> SELECT STATEMENT, GOAL = CHOO
在Oracle中,哪几种情况不能用上索引
DBA宝典 2017-05-01 00:11 为何在<em>查询</em>中<em>索引</em>未被使用 (文档 ID 1549181.1、英文文档为67522.1) “为什么<em>索引</em>没有被使用”是一个涉及面较广的问题。有多种原因会导致<em>索引</em>不能被使用。首要的原因就是统计信息不准,第二原因就是<em>索引</em>的选择度不高,使用<em>索引</em>比使用全表扫描效率更差。还有一个比较常见的原因,就是对<em>索引</em>列进行了函数、算术运算或其他表达式等操作,或出
能使Oracle索引失效的六大限制条件
例如一张表中有上百万条数据,对某个字段加了<em>索引</em>,但是<em>查询</em>时性能并没有什么提高,这可能是 oracle <em>索引</em>失效造成的。oracle <em>索引</em>有一些限制条件,如果你违反了这些<em>索引</em>限制条件,那么即使你已经加了<em>索引</em>,oracle还是会执行一次全表扫描,<em>查询</em>的性能不会比不加<em>索引</em>有所提高,反而可能由于数据库维护<em>索引</em>的系统开销造成性能更差。 下面就是总结的能使 Oracle <em>索引</em>失效的七大限制条件。   1....
各种Oracle索引类型介绍
逻辑上:Single column 单行<em>索引</em> Concatenated 多行<em>索引</em> Unique 唯一<em>索引</em> NonUnique 非唯一<em>索引</em> Function-based函数<em>索引</em> Domain 域<em>索引</em>物理上:Partitioned 分区<em>索引</em> NonPartitioned 非分区<em>索引</em> B-tree: Normal 正常型B树 Rever Key 反转型B树 Bitmap 位图<em>索引</em><em>索引</em>结构:B-tree:
mysql查询不走索引及解决方法
my<em>sql</em><em>查询</em>,通过explain 分析,没有利用到<em>索引</em>,<em>查询</em>效率不高等出现的问题。
Oracle查询隐式类型转换不走索引
1. 框架 mybatis,oracle 2. 问题 昨天DBA发来邮件说有一个SQL引起CPU高负载。查看了一下SQL,根据时间条件<em>查询</em>,时间是有<em>索引</em>的,但是CPU会突然飙高。 SELECT * FROM ( SELECT t1.*,rownum as rn FROM ( SELECT count(:"SYS_B_0") as COUNT ,T.USER_ID, T.USER_N
mysql 索引 大于等于 走不走索引 最左前缀
你可以认为联合<em>索引</em>是闯关游戏的设计例如你这个联合<em>索引</em>是state/city/zipCode那么state就是第一关 city是第二关, zipCode就是第三关你必须匹配了第一关,才能匹配第二关,匹配了第一关和第二关,才能匹配第三关你不能直接到第二关的<em>索引</em>的格式就是第一层是state,第二层才是city上面举例介绍来源 https://zhidao.baidu.com/question/1863
ORACLE为什么不走主键索引缺走普通的索引
表DINV_HDR,子表大概5 6个,大概800W数据,rn主键SHOP_CODE,COUNTER,INV_NUM, 类型CHAR(10),CHAR(5),CHAR(30)rn增加<em>索引</em>:SHOP_CODE,COUNTER,INV_RUNNO, INV_RUNNO字段类型NUMBER(12)rnrn当我<em>查询</em> SELECT * FROM DINV_HDR WHERE SHOP_CODE='001' AND COUNTER='001' AND INV_NUM='10401-001' 时,走的是增加的<em>索引</em>,缺不是主键<em>索引</em>rnrn1.重新收集统计信息,rn2.重新编译所有主键,<em>索引</em>,rn3.导出DMP之后换一台机重新导入走主键<em>索引</em>,rn4.如果WHERE条件增加空格走主键<em>索引</em> rn例如SHOP_CODE='001 ' AND COUNTER='001 ' AND INV_NUM='10401-001 ' ;rnrn请帮忙分析下什么原因[img=https://img-bbs.csdn.net/upload/201601/06/1452016516_355311.png][/img]
为什么查询没有走索引
selectrn situationNum.org_id,org.area_name,situationNum.org_name,rn situationNum.Agent_Id,situationNum.Agent_Name,rn countNum.COUNT_IN,countNum.COUNT_IN_ANSWER,countNum.COUNT_OUT,rn situationNum.Login_Time,situationNum.Talking_Time,rn situationNum.Rest_Time,situationNum.Arrange_Time,situationNum.bus_timern fromrn (select t.org_id,t.area_name,t.org_shortname from rml_aux_org t) orgrn left joinrn (select t.org_id,t.org_name,t.agent_id,t.agent_name,t.login_time,rn t.talking_time,t.rest_time,t.arrange_time,t.bus_timern from RML_RT_AGENTsituation trn where 1=1rn and t.bus_time>=to_date('2016-12-22 00:00:00','YYYY-MM-DD HH24:MI:SS')rn and t.bus_time=to_date('2016-12-22 00:00:00','YYYY-MM-DD HH24:MI:SS')rn and t.bus_time0rn and t.bus_time>=to_date('2016-12-22 00:00:00','YYYY-MM-DD HH24:MI:SS')rn and t.bus_time=to_date('2016-12-22 00:00:00','YYYY-MM-DD HH24:MI:SS')rn and t.bus_time)rn then t.agent_id end) COUNT_OUTrn from RML_RT_CALLINFO trn group by t.agent_idrn ) countNumrn on situationNum.agent_id=countNum.agent_idrn[img=https://img-bbs.csdn.net/upload/201612/22/1482399739_37639.png][/img][img=https://img-bbs.csdn.net/upload/201612/22/1482399751_876110.png][/img]
ORACLE提高查询效率强制走索引
  select     /*+index( b HR_EXAM_PAPER_PER_HIS_IDX)*/ ---括号内写的是表的<em>索引</em>名称       b.PKID,       (CASE         WHEN b.ANSWER = b.RIGHT_ANSWERS THEN          'Y'         ELSE          'N'       END) IF_RIGHT ...
Oracle 中关键字 ‘exists‘ 与 ‘in’ 详解
IN(list) 和 NOT IN(list) 等于列表其一和不等于列表其一,IN(list) 还常用于判断一个子<em>查询</em>的结果集; EXISTS(): 用在where中作为过滤条件,其后跟一个子<em>查询</em>,只要子<em>查询</em>可以查出至少一条数据,那么EXISTS就返回TRUE; 举例对比效率问题: select * from T1 where exists(select b from T2 where T1.a =
oracle不等于,not in ,not exists的使用
1.&amp;lt;&amp;gt;     select * from s_dic s where s.dic_type &amp;lt;&amp;gt; 'ordertype' 问题1: &amp;lt;&amp;gt;会自动过滤s.dic_type为空的订单 解决方法:     1)截取字符串:返回第一次ordertype出现的位置,找不到对应字符串返回为0,不过dic_type必须保证为非空,所以联合concat一起使用,ins...
Oracle 建立索引及SQL优化
Oracle 建立<em>索引</em>及SQL优化 数据库<em>索引</em>: <em>索引</em>有单列<em>索引</em> 复合<em>索引</em>之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一<em>索引</em>。数据库<em>索引</em>主要进行提高访问速度。 建设原则:  1、<em>索引</em>应该经常建在Where 子句经常用到的列上。如果某个大表经常使用某个字段进行<em>查询</em>,并且检索行数小于总表行数的5%。则应该考虑。  2、对于两表连接
oracle提高查询效率的34条方法
转自:http://www.2cto.com/database/201301/181269.html 支持原创 1、选择最有效率的表名顺序   (只在基于规则的优化器中有效):   ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为
为什么这条sql不走索引啊???
<em>sql</em>如下:rnselect t.description as "description",rn f.area_no as "area_no",rn f.city_no as "city_no",rn f.city_name as "city_name",rn f.town_no as "town_no",rn f.town_name as "town_name",rn f.channel_no3 as "channel_no3",rn f.channel_name3 as "channel_name3",rn nvl(sum(f.day_value), 0) as "month_total",rn nvl(sum(f.day_value_lm), 0) as "last_month_value"rn from dm.dm_td_dev_Analysis_depart f, dmcode.dmcode_area trn where acct_date = 20100801rn and f.flag = 01rn and t.area_no = f.area_norn group by f.channel_no3,rn f.channel_name3,rn f.town_no,rn f.town_name,rn f.city_no,rn f.city_name,rn f.area_no,rn t.description,rn t.idx_norn order by t.idx_no, f.city_no, f.town_no, f.channel_no3rnrn这个表 建了2个<em>索引</em>,一个是acct_date 另一个是acct_date和flag 组合的,但是执行的时候怎么不走<em>索引</em>呢???rn页面展现的太慢了
sql 字符串 数值型不走索引
SQL_ID 99tfs2tpapwqk, child number 0 ------------------------------------- select count(*) num from ( select a.*, b.client_name client_name2, a.err_msg err_msg2 from tbtranscfm a inner join tbclie
sql不走索引的情况合集
1.两个表join<em>查询</em>,却不走连接条件的<em>索引</em>。当<em>索引</em>无问题,<em>sql</em>也无问题时,就可以去看看这两个表连接字段的字符集是否一致. 2.where条件,where a=b,请保持ab类型一致,虽然数据库可以自动数字和字符的转换,但是会隐式的去调用tochar函数,使用函数后会导致全表扫描,其他不一致类型同理.
Mysql中哪些Sql不走索引
要尽量避免这些不走<em>索引</em>的<em>sql</em>: SELECT `sname` FROM `stu` WHERE `age`+10=30;-- 不会使用<em>索引</em>,因为所有<em>索引</em>列参与了计算 SELECT `sname` FROM `stu` WHERE LEFT(`date`,4) 1990; -- 不会使用<em>索引</em>,因为使用了函数运算,原理与上面相同 SELECT * FROM `houdunwang` WHE
这段SQL为什么不走索引?
SELECT TO_CHAR (mmt.transaction_date, 'yyyy/mm/dd') AS transaction_date,rn wdj.attribute10 AS order_number,rn wdj.attribute11 AS order_line_number, mmt.organization_id,rn mmt.inventory_item_id,rn -SUM (mtl.transaction_quantity) AS transaction_quantity,rn mmt.transaction_uom, 1 trx_typern FROM mtl_material_transactions mmt,rn mtl_transaction_lot_numbers mtl,rn wip_discrete_jobs wdj,rn wip_entities wern WHERE 1 = 1rn AND mmt.organization_id = mtl.organization_idrn AND mmt.transaction_id = mtl.transaction_idrn AND mmt.inventory_item_id = mtl.inventory_item_idrn AND wdj.wip_entity_id = we.wip_entity_idrn AND wdj.organization_id = mmt.organization_idrn AND wdj.primary_item_id = mmt.inventory_item_idrn AND SUBSTR (mtl.lot_number,rn INSTR (mtl.lot_number, '#', 1) + 1,rn LENGTH (mtl.lot_number)rn ) = we.wip_entity_namern AND mmt.transaction_source_type_id = 13rn AND mmt.transaction_action_id = 2rn AND ( mmt.subinventory_code IN ('QC90', 'QC91', 'QC92')rn OR mmt.subinventory_code IN (rn SELECT DISTINCT msub.secondary_inventory_namern FROM mtl_secondary_inventories msubrn WHERE NVL (msub.attribute2, 'abc') = 'PRD'rn AND msub.organization_id = mmt.organization_id)rn )rn AND wdj.attribute10 is not nullrn AND wdj.attribute11 is not nullrn AND mmt.transfer_subinventory LIKE '%88'rn GROUP BY TO_CHAR (mmt.transaction_date, 'yyyy/mm/dd'),rn wdj.attribute10,rn wdj.attribute11,rn mmt.organization_id,rn mmt.inventory_item_id,rn mmt.transaction_uomrnrn各位大虾,这段SQL中的wip_discrete_jobs wdj表没有走<em>索引</em>,不知道为什么,其它几个表都走了,此表有49W数据,rn建有联合<em>索引</em>(organization_id,wip_entity_id),单独<em>索引</em>primary_item_id,求救.
ORACLE中NOT IN 的替代
<em>查询</em>哪些书没有借出?  典型的<em>查询</em>方式为:  SELECT TITLE FROM BOOKSHELF WHERE TITLE NOT IN     (SELECT TITLE FROM BOOKSHELF_CHECKOUT)  ORDER BY TITLE;  如果BOOKSHELF_CHECKOUT很大的话,速度可能会很慢,因为ORACLE会在BOOKSHELF_CHECKOUT上执行
oracle 不走索引
今天加了个简单数据,结果走计划分析没有走<em>索引</em>。 搜了一圈后,发现,因为返回的数据量很大,大概3分之一。oracle这种他会改为走全表扫描,因为他觉得这样效率更高。所以不走<em>索引</em>。 如果只是<em>查询</em>对应的<em>索引</em>字段,还是走<em>索引</em>,包含了其他的字段的话,就是走全表。 ...
Oracle SQL不走索引小记
SQL执行计划不走<em>索引</em> 一、优化器认为走全表扫描更优。 在这种情况下,需要重新分析一遍表,更新表的状态,有助于优化器分析出正确的执行计划。 analyze table tablename compute statistics; analyze index indexname compute statistics; 或者 execdbms_stats.gather_schema_
SQL优化之不走索引_加hint也不走索引
案例1:隐式类型转换 SQL> create table t(id varchar2(10)); 表已创建。 SQL> insert into t select empno from scott.emp; 已创建14行。 SQL> commit; 提交完成。 SQL> select * from t; ID ---------- 7369 7499 7521
mySql优化-timestamp不走索引及or不走索引优化
swx_order表和swx_order_provider表和swx_order_servicer表联查,where条件是last_modify_time,三张表的数据量都在40万以上,如下<em>sql</em><em>查询</em>时间非常慢,而且主表(swx_order)时而走<em>索引</em>,时而不走<em>索引</em>,当last_modify_time时间区间很小时走<em>索引</em>,时间区间大之后就不走<em>索引</em>了,原因是如果加了<em>索引</em>的行数比较多,my<em>sql</em>的优化...
mysql 不走索引的情况
1 or (待确认)、in(待确认) 2 like '%abc' 或者 like‘%abc%’ 3 where num/2=100 或者 subString(a,1,3)='ab' 4 where id !=2 或者 where id &lt;&gt; 2 5 where name is null 6 复合<em>索引</em>a-b-c,a用到,b用不到,c用不到,ab有效,ba有效,a or b无效,...
不走索引的情况和原因
添加复合<em>索引</em>的表中,where条件不包含<em>索引</em>首字段,这种情况下不走走<em>索引</em>(除了跳跃)rn为什么呢?
发现他不走索引
my<em>sql</em> rnselect count(distinct(userId)) number,3rnfrom SessionLogrnwhere accesstime>date_Sub(curdate(), INTERVAL DAYOFMONTH(curdate())-1 day)rnunion allrnselect count(distinct(userId)) number,4rnfrom SessionLogrnwhere accesstime>date_sub(date_Sub(curdate(), INTERVAL DAYOFMONTH(curdate())-1 day),INTERVAL 1 month) and accesstime
oracle优化一则--不走索引
1、问题一个<em>查询</em>未走<em>索引</em>,从一个视图中<em>查询</em>,视图定义为5张表的union all。有明显的条件TMH12 = '1001271876'2、排查@?/rdbms/admin/<em>sql</em>trpt 脚本生成优化建议通过建议来看,是生成<em>索引</em>的建议,对列进行格式转换,TO_CHAR(&quot;TMH12&quot;),1- Index Finding (see explain plans section below)The ex...
IN和OR会走索引吗?
--注:所有步骤均按序号分步单独执行,并观察对应的情况 --0. USE tempdb GO IF OBJECT_ID('t') IS NOT NULL DROP TABLE t GO CREATE TABLE t(pkId INT IDENTITY(1,1) PRIMARY KEY, id VARCHAR(10) NOT NULL, room VARCHAR(10) NOT NULL, oth
mysql的in会让索引失效吗?
my<em>sql</em>的in会让<em>索引</em>失效吗?不会! 看结果: my<em>sql</em>&gt; desc select * from tb_province where name in ('lily3', 'lily2', 'lily1'); +----+-------------+-------------+------------+------+---------------+------+--...
Mysql 带 in 的删除操作会不走索引
今天遇到一个性能问题,最后定位到一个删除操作特别慢。delete from t_policy where id in (select policyid from t_policy_user where userid = 1067919); 语句很简单explain 发现 t_policy 没有走<em>索引</em>。my<em>sql</em>&amp;gt; explain delete from t_policy where id...
表分区后不走索引
<em>查询</em>语句rn[code=SQL]rnselect id,[收货人名称] ,[申报日期] ,[商品编码] ,[价格] FROM dbo.dc_Russia WHERE [申报日期] between '2010-1-1 0:00:00' and '2011-8-11 0:00:00' and [商品编码]='9026'rn[/code]rn<em>索引</em>创建是rn[code=SQL]rnCREATE NONCLUSTERED INDEX [index_hs_date] ON [dbo].[dc_Russia] rn(rn [商品编码] ASCrn)WITH (SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF) ON [Data_Partition_Scheme]([申报日期])rn[/code]rn[Data_Partition_Scheme]([申报日期])是表分区方案rnrn执行计划却是要表扫描,为什么呢?
mysql 不走索引的情形
my<em>sql</em> 不走<em>索引</em>的情形: 1. null 值判断; 2. != , &amp;lt;&amp;gt; 操作符; 3. or(大多数情况下); 4. in(大多数情况下); 5. like的使用(大多数情况下); 6. where 子句中对字段进行表达式操作,eg: select id from t where num/2=100 ; 7. 在 where 子句中对字段进行函数操作 8. 在 ...
为什么会不走索引
[code=<em>sql</em>]select * from table where table a where a.name like '%a'[/code]rn比如 表table中 name列建立了<em>索引</em>,这样<em>查询</em>为什么不会走<em>索引</em>呢,大神给解答一下
mysql不走索引总结
在my<em>sql</em><em>查询</em>语句中,总会发现明明已经建立了<em>查询</em>字段<em>索引</em>,可是却没有用到,这是因为在my<em>sql</em>中有些<em>查询</em>语句是用不到<em>索引</em>的,总结如下,以供大家分享。1.like语句 2.列类型为字符串类型,<em>查询</em>时没有用单引号引起来 3.在where<em>查询</em>语句中使用表达式 4.在where<em>查询</em>语句中对字段进行NULL值判断 5.在where<em>查询</em>中使用了or关键字, myisam表能用到<em>索引</em>, innodb不行
避免写出不走索引的SQL, MySQL
在MySQL中,并不是你建立了<em>索引</em>,并且你在SQL中使用到了该列,MySQL就肯定会使用到那些<em>索引</em>的,有一些情况很可能在你不知不觉中,你就“成功的避开了”MySQL的所有<em>索引</em>。 现假设有t_stu表,age,sname上建立了<em>索引</em> <em>索引</em>列参与计算 如果where条件中age列中使用了计算,则不会使用该<em>索引</em> SELECT `sname` FROM `t_stu
MSSQL中IN是否用索引.....
作者:no_mIss用MSSQL时间快一年了,数据量有时会相对比较多,所以经常要优化,也看过很多资料,但大都有一句:IN、NOT IN不用<em>索引</em>,今天发此贴希望能有人参与讨论,到底IN用不用<em>索引</em>,如果用,在什么情况下用<em>索引</em>,在什么情况下不用<em>索引</em>。前提:表[Table]字段[id] INT PRIMARY KEY 聚集<em>索引</em>以下写法:SELECT * FROM [Table] WHERE id = 1肯
SQL无法走索引的情况及解决思路
上次丁俊大师在社群上做了CBO优化器和坑爹案例的分享后,反响不是一般的强烈,但其中也有一部分同学表示太高大上了(我也是这样觉得的),消化起来相当有难度,于是便有了本文。绕开复杂的CBO优化器不说,本文将帮你理清那些因为SQL语句编写规范问题导致没有充分利用<em>索引</em>来大幅提升效率的使用场景。一、SQL无法走<em>索引</em>的情况及解决思路因为数据库优化器不够智能,或者一些逻辑原因,导致SQL在比较适合走<em>索引</em>的情况下...
mysql order by 不走索引
[code=<em>sql</em>]rncreate table test(rnid int auto_increment primary key,rntname varchar(50),rntremark varchar(50),rnkey idx_name(tname)rn)rndelimiter $$rnCREATE PROCEDURE pro()rnBEGINrn DECLARE init_data INTEGER default 1;rn WHILE init_data <= 1000000 DO rn INSERT INTO test(tname) VALUES(init_data);rn SET init_data = init_data + 1;rn END WHILE; rnENDrnrnset autocommit=0 ;rncall pro();rncommit;rnexplain select * from test order by tname ;rn# id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extrarn1, SIMPLE, test, ALL, , , , , 1001256, Using filesortrn [/code]
sql dintinct走索引
<em>sql</em> dintinct走<em>索引</em>吗 如果不走 如何改?。。。。。。。。
语句不走索引(复合字段索引
explain rnselect * from Log where id= 12418040 and ActiveTime rn我已经建立<em>索引</em> (id, ActiveTime )rnrn+----+-------------+-------+------+---------------+------+---------+------+------+-----------------------------------------------------+rn| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |rn+----+-------------+-------+------+---------------+------+---------+------+------+-----------------------------------------------------+rn| 1 | SIMPLE | NULL | NULL | NULL | NULL | NULL | NULL | NULL | Impossible WHERE noticed after reading const tables |rn+----+-------------+-------+------+---------------+------+---------+------+------+-----------------------------------------------------+rn1 row in setrnrn很奇怪 ,  没有道理啦 
phoenix 有时候不走二级索引 会 更快 /*+ NO_INDEX*/
0: jdbc:phoenix:192.168.199.154&amp;gt; select t1.seq_id as seq_id from (select seq_id,toy from T_EXTENSION_SHOW where show_date='2018-11-24' and email='wjc@45555.com') t1 where t1.toy='ambi' and t1.cam_...
phoenix查询hbase ,想要走rowkey查询却成了走索引
背景: 这是实际项目中遇到的实例,主要涉及到rowkey<em>查询</em>,<em>索引</em><em>查询</em> 以及主键primary key。问题是在<em>sql</em>使用order by <em>查询</em> 时遇到的,以下为个人浅见,仅供参考。内容:     Hbase中存在数据表如下:CREATE TABLE IF NOT EXISTS Test.AppLog ( UserId INTEGER NOT NULL, Number INTEGER NOT...
phoenix 5.0 IN 语法走二级索引遇到的bug
两条基本相同的SQL: SELECT SEQ_ID,SHOW_DATE,EMAIL,TIME_SPEND,CAM_SITE,TOKEN_EARNED,REVENUE,TIPS_SENT,TOY FROM T_EXTENSION_SHOW WHERE SHOW_DATE='2018-11-26' AND SEQ_ID IN(2999909, 2999908, 2999907, 2999906...
解决MySQL中IN子查询会导致无法使用索引问题
来源:http://www.jb51.net/article/117412.htm今天看到一篇关于MySQL的IN子<em>查询</em>优化的案例,一开始感觉有点半信半疑(如果是换做在SQL Server中,这种情况是绝对不可能的,后面会做一个简单的测试。)随后动手按照他说的做了一个表来测试验证,发现MySQL的IN子<em>查询</em>做的不好,确实会导致无法使用<em>索引</em>的情况(IN子<em>查询</em>无法使用所以,场景是MySQL,截止的版本...
解决mysql中in子查询导致不走索引
原<em>sql</em>为: SELECT SUM(money) FROM wallet WHERE user_id IN (SELECT DISTINCT user_id FROM user_recharge WHERE group_id = '6789' AND is_del=...
如何看到sqlserver在执行的时候走不走索引
我们看执行计划,里面似乎也没有说走不走<em>索引</em>,只能通过set statistics time on来看看时间确定,但是有没有直接的方法呢?还有就是有没有方法看看执行之后比如where后面有两个条件,到底是先走了哪个,总之就是很明确的执行过程
不走"
[img=http://img.my.csdn.net/uploads/201211/14/1352878634_4786.png][/img]rnrn[img=https://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/8.gif][/img]rnrn如图——————删除的servlet中 条件已经满足了a>0进入了方法也输出了@@@@@@@@@@@@@@@@@@@@@@@@rn可是就是不走
mysql强制走索引
force index 函数表示强制走括号中的<em>索引</em>key select order_key ,createtime FROM aaa force index(createtime) group by order_key 在生产环境验证的时候。 用 explain select order_key ,createtime FROM aaa force index(createtime) group ...
何时走索引
问一个老生常谈的问题,oracle何时走<em>索引</em>,今天遇到一个奇怪的问题,<em>查询</em>一个表最近七天内的数据,数据量2w条左右,全表的数据量达到50多w,根据分析的很,数据量远远没有达到1/3,如果建了<em>索引</em>,应该会走<em>索引</em>才对,可这就奇怪了,它偏偏不走<em>索引</em>,但是加了order by之后,它就能走<em>索引</em>了,更奇怪的事是加了order by再加一个没有<em>索引</em>的条件,它又不会走<em>索引</em>了,感觉直接上<em>sql</em>说得清楚些,如下:rn全部的数据量:[img=https://img-bbs.csdn.net/upload/201407/07/1404723148_582296.jpg][/img]rn符合条件的数据量:[img=https://img-bbs.csdn.net/upload/201407/07/1404723242_717803.jpg][/img]rn<em>查询</em>最近七天的数据不会自动走<em>索引</em>(create_time上建了<em>索引</em>)(执行计划):rn[img=https://img-bbs.csdn.net/upload/201407/07/1404723352_279851.jpg][/img]rn加了orderby之后能走<em>索引</em>:[img=https://img-bbs.csdn.net/upload/201407/07/1404723437_494913.jpg][/img]rn再加一个没有<em>索引</em>的条件,又变成了不会走<em>索引</em>:rn[img=https://img-bbs.csdn.net/upload/201407/07/1404723509_627844.jpg][/img]rn我知道可以使用hint让它强制走<em>索引</em>,但是我想了解一下oracle优化器是怎么思考,有木有大虾能解释一下不,小弟不胜感激rnrn
为or、in平反——or、in到底能不能利用索引
先说一个笑话,作为开场白。俺也换换风格试一试,呵呵。   在以前,有三个书生赶考,在路上遇到了一个算命先生,于是就问算命先生:我们三个人赶考,结果如何呀?算命先生伸出来了一个手指头(食指)。三个书生赶考的结果是,有一个人考中了。三人一想呀,这个挂算的对呀,有一个人考中了嘛。   其实“一个手指头”是很模糊的,很忽悠人的。有各种各样的解释,比如:一个人考中;一个人没考中;一起考中了;
IN 查询的时候索引不起作用?
其实很简单,<em>索引</em>是否起叙用,主要取决于字段类型: 1. 如果字段类型为字符串,需要给in<em>查询</em>中的数值与字符串值都需要添加引号,<em>索引</em>才能起作用。 2. 如果字段类型为int,则in<em>查询</em>中的值不需要添加引号,<em>索引</em>也会起叙用。 IN的字段,在联合<em>索引</em>中,按以上方法,也会起作用。
Mysql使用IN查询导致索引失效的情况
一直以为Mysq使用In<em>查询</em>,参数数量不是太多的情况下,是可以继续走<em>索引</em>的方式。但是事实是: 创建的<em>索引</em>有: 奇葩不,检查了下,字段属性类型都是Int类型,是一致的。但是执行计划中的“Key”对应的值却是空的,原因不详,稍后查一下....。 然后最终使用了其他方式处理,force index(Your_Index) 强制使用<em>索引</em>才可以生效,如图: 注意:当IN的参数为一个时...
为什么没有走索引???
[code=<em>sql</em>]SELECT T.*rn FROM rn tbl_vao_chnltrans t rn WHERE rn trans_pay IN ('0500','0502','04100','04S230','03001','041Y')rn ORrn trans_prod IN ('05S00','05S3102','100','1Y0','023001','04231Y2')[/code]rnrn为什么我在表上的 trans_pay 和 trans_prod 这两个字段上建了<em>索引</em>,都没有走<em>索引</em>?rn执行计划就是全表扫描。rnrn这张表有点大,为什么会没有走<em>索引</em>?请问怎么写才会走到<em>索引</em>(需要select 非<em>索引</em>字段)?
强制走索引
在一个时间字段上加了<em>索引</em>,<em>索引</em>名为idx_detail_create_time,但是发现并没有走这个<em>索引</em>,这时可以强制走此<em>索引</em>: FORCE INDEX ( idx_detail_create_time )
mysql 执行计划走索引
my<em>sql</em>> show index from AssignClientManager; +---------------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+----
Oracle优化——LIKE与索引(以%开头的LIKE会不走索引或走索引全扫描)
这样会走<em>索引</em>范围扫描,因为这个表达式有前导性。 SH@ prod> set autotrace on SH@ prod> select max(cust_credit_limit) , count(*) from customers_ne where cust_last_name like 'Vaugh%' ; MAX(CUST_CREDIT_LIMIT) COUNT(*) --------
oracle 不走索引的几种情况
Posted on 2010-01-14 15:16 spinage 阅读(327) 评论(0) 编辑 收藏 1、建立组合<em>索引</em>,但<em>查询</em>谓词并未使用组合<em>索引</em>的第一列,此处有一个INDEX SKIP SCAN概念。 2、在包含有null值的table列上建立<em>索引</em>,当时使用select count(*) from table时不会使用<em>索引</em>。 3、在<em>索引</em>列上使用函数时不会使用<em>索引</em>,如...
索引失效和注意事项
https://blog.csdn.net/hehexiaoxia/article/details/54312130 <em>索引</em>失效的情况 如果是同样的<em>sql</em>如果在之前能够使用到<em>索引</em>,那么现在使用不到<em>索引</em>,以下几种主要情况: 随着表的增长,where条件出来的数据太多,大于15%,使得<em>索引</em>失效(会导致CBO计算走<em>索引</em>花费大于走全表) 统计信息失效 需要重新搜集统计信息...
大家来谈谈哪些情况可以导致索引失效
今天写了一条<em>sql</em>,执行的时候发现用时非常长,以至于查不出结果。 后来发现是一个有<em>索引</em>的字段使用了like 和 upper()导致了<em>索引</em>失效。 然后我就试了以下几种都会使<em>索引</em>失效 !=、is null
索引失效原因总结
今天一个同事突然问我<em>索引</em>为什么失效。说实在的,失效的原因有多种: 但是如果是同样的<em>sql</em>如果在之前能够使用到<em>索引</em>,那么现在使用不到<em>索引</em>,以下几种主要情况: 1. 随着表的增长,where条件出来的数据太多,大于15%,使得<em>索引</em>失效(会导致CBO计算走<em>索引</em>花费大于走全表) 2. 统计信息失效      需要重新搜集统计信息 3. <em>索引</em>本身失效      需要重建<em>索引</em> 下面是一些不会使用到索
酒店管理系统的三层架构下载
酒店管理系统的三层架构,包含sql和Access两种数据库的应用 相关下载链接:[url=//download.csdn.net/download/dendycc/3423496?utm_source=bbsseo]//download.csdn.net/download/dendycc/3423496?utm_source=bbsseo[/url]
TD演进路线.下载
TD演进路线: R99——>R4——>R5——>R6——>R7——>LTE——>4G LTE以及之前的都属于3G,LTE可以算作3.9G的技术。 R4和R5都是TD发展经过的两个阶段,目前现网中以R4和R5居多。 相关下载链接:[url=//download.csdn.net/download/hejunxing2008/4292066?utm_source=bbsseo]//download.csdn.net/download/hejunxing2008/4292066?utm_source=bbsseo[/url]
struts2+spring+ibatis实例下载
简单的struts2+spring+ibatis实例,实现了增删改查以及分页显示功能,包含jar包和数据库脚本。 相关下载链接:[url=//download.csdn.net/download/xueqi221/4523309?utm_source=bbsseo]//download.csdn.net/download/xueqi221/4523309?utm_source=bbsseo[/url]
我们是很有底线的