热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

关于连接后索引失效问题求高手解答

selectexec_sqnfromawherebarcode11101072089978;a表barcode建有索引,查询很快,得到结果33562465selectg
select exec_sqn from a  where barcode='11101072089978';a表barcode建有索引 ,查询很快, 得到结果'33562465'
select groupno from b where exec_sqn='33562465';b表exec_sqn建有索引,查询很快
select groupno from a,b where a.exec_sqn=b.exec_sqn and a.barcode='11101072089978'
两个表连接后查询就很慢了,求解释!

7 个解决方案

#1


连接俩表的exec_sqn建立索引。

#2


2个表的exec_sqn都建了索引 还是很慢
我目前只能用连续2次查询来解决

#3


exec_sqn 上加索引,如果引用列固定,可以考虑应用include来解决。

#4


说明2个表都是字段很多的大表,数据量都是上百万的,用连接2次查询都是瞬间插出结果,但关联查询却要10几秒

#5


把联接查询的执行计划贴出来看一下。

#6


我这里没问题,你把你的计划和索引情况帖出来看看
IF OBJECT_ID('T1') IS NOT NULL DROP TABLE T1
IF OBJECT_ID('T2') IS NOT NULL DROP TABLE T2
GO
CREATE TABLE T1(
ID1 UNIQUEIDENTIFIER
,ID2 UNIQUEIDENTIFIER
)
GO
SET NOCOUNT ON
INSERT INTO T1
SELECT NEWID(),NEWID()
GO 10000

CREATE TABLE T2(
ID2 UNIQUEIDENTIFIER
,VAL2 VARCHAR(50)
)
INSERT INTO T2
SELECT ID2,NEWID() FROM T1
GO
CREATE INDEX INX_T1_ID1 ON T1(ID1)
CREATE INDEX INX_T2_ID2 ON T2(ID2)
GO
SET NOCOUNT OFF
GO
SET SHOWPLAN_TEXT ON 
GO
DECLARE @ID1 UNIQUEIDENTIFIER
SELECT TOP 1 @ID1=ID1 FROM T1 ORDER BY NEWID()
SELECT VAL2
FROM T1,T2 
WHERE T1.ID2=T2.ID2
AND T1.ID1=@ID1
GO
SET SHOWPLAN_TEXT OFF
GO
/*
开始执行循环
批处理执行已完成 10000 次。
StmtText
-------------------------------------------------------------------------------
DECLARE @ID1 UNIQUEIDENTIFIER
SELECT TOP 1 @ID1=ID1 FROM T1 ORDER BY NEWID()

(1 行受影响)

StmtText
---------------------------------------------------------------------
  |--Sort(TOP 1, ORDER BY:([Expr1004] ASC))
       |--Compute Scalar(DEFINE:([Expr1004]=newid()))
            |--Index Scan(OBJECT:([tempdb].[dbo].[T1].[INX_T1_ID1]))

(3 行受影响)

StmtText
------------------------------------------------------------------

SELECT VAL2
FROM T1,T2 
WHERE T1.ID2=T2.ID2
AND T1.ID1=@ID1

(1 行受影响)

StmtText
-------------------------------------------------------------------------------------------------------------------------------------------------
  |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1004]))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([tempdb].[dbo].[T1].[ID2]))
       |    |--Nested Loops(Inner Join, OUTER REFERENCES:([Bmk1000]))
       |    |    |--Index Seek(OBJECT:([tempdb].[dbo].[T1].[INX_T1_ID1]), SEEK:([tempdb].[dbo].[T1].[ID1]=[@ID1]) ORDERED FORWARD)
       |    |    |--RID Lookup(OBJECT:([tempdb].[dbo].[T1]), SEEK:([Bmk1000]=[Bmk1000]) LOOKUP ORDERED FORWARD)
       |    |--Index Seek(OBJECT:([tempdb].[dbo].[T2].[INX_T2_ID2]), SEEK:([tempdb].[dbo].[T2].[ID2]=[tempdb].[dbo].[T1].[ID2]) ORDERED FORWARD)
       |--RID Lookup(OBJECT:([tempdb].[dbo].[T2]), SEEK:([Bmk1004]=[Bmk1004]) LOOKUP ORDERED FORWARD)

(7 行受影响)


*/

#7


oracle的数据库

推荐阅读
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 本文介绍了游标的使用方法,并以一个水果供应商数据库为例进行了说明。首先创建了一个名为fruits的表,包含了水果的id、供应商id、名称和价格等字段。然后使用游标查询了水果的名称和价格,并将结果输出。最后对游标进行了关闭操作。通过本文可以了解到游标在数据库操作中的应用。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 在Oracle11g以前版本中的的DataGuard物理备用数据库,可以以只读的方式打开数据库,但此时MediaRecovery利用日志进行数据同步的过 ... [详细]
  • 本文介绍了Oracle存储过程的基本语法和写法示例,同时还介绍了已命名的系统异常的产生原因。 ... [详细]
  • MySQL多表数据库操作方法及子查询详解
    本文详细介绍了MySQL数据库的多表操作方法,包括增删改和单表查询,同时还解释了子查询的概念和用法。文章通过示例和步骤说明了如何进行数据的插入、删除和更新操作,以及如何执行单表查询和使用聚合函数进行统计。对于需要对MySQL数据库进行操作的读者来说,本文是一个非常实用的参考资料。 ... [详细]
  • 微软头条实习生分享深度学习自学指南
    本文介绍了一位微软头条实习生自学深度学习的经验分享,包括学习资源推荐、重要基础知识的学习要点等。作者强调了学好Python和数学基础的重要性,并提供了一些建议。 ... [详细]
  • vue使用
    关键词: ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • Java自带的观察者模式及实现方法详解
    本文介绍了Java自带的观察者模式,包括Observer和Observable对象的定义和使用方法。通过添加观察者和设置内部标志位,当被观察者中的事件发生变化时,通知观察者对象并执行相应的操作。实现观察者模式非常简单,只需继承Observable类和实现Observer接口即可。详情请参考Java官方api文档。 ... [详细]
  • java drools5_Java Drools5.1 规则流基础【示例】(中)
    五、规则文件及规则流EduInfoRule.drl:packagemyrules;importsample.Employ;ruleBachelorruleflow-group ... [详细]
  • Opencv提供了几种分类器,例程里通过字符识别来进行说明的1、支持向量机(SVM):给定训练样本,支持向量机建立一个超平面作为决策平面,使得正例和反例之间的隔离边缘被最大化。函数原型:训练原型cv ... [详细]
  • 【原创】利用Python进行河流遥感处理的PyRIS软件开发
    今天开始着手改造pyris1.0.文章地址:https:doi.org10.1016J.ENVSOFT.2018.03.028Monegaglia,2 ... [详细]
author-avatar
木棉
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有