两张表内联,没有使用索引是什么情况?? 5C
select m.id,t.`id` 
from  cz_zz_xxxb_view m 
inner join (
    select w.`id` from cc_zz_wt_view w 
    where  INSTR(w.`conten`,'土地') 
)t
on   t.id = m.id

w 是问题表 1w多数据
m 表是关联的 100多w 的数据
on 使用的都是 索引关联

可是最后还会走 ALL 没有使用索引是为什么??

已解决, 是两个表的关联字段,编码不统一导致的

0

7个回答

已解决, 是两个表的关联字段,编码不统一导致的

1

找到两张表的外键关系就可以了

0

oracle索引是有自动优化的,有子查询的时候,如果走all的效率高,就不会走索引

0

应该是这句话

 select w.`id` from cc_zz_wt_view w  where  INSTR(w.`conten`,'土地') 

如果在查询语句当中有函数的话,不会用到索引的

0

应尽量避免在where子句中对字段进行函数操作,这将导致引擎放弃使用索引而进行全表扫描。

0

首先你确认下

select m.id,t.id
from cz_zz_xxxb_view m
where
t.id = ''测试ID'

是否全表查询(ALL)

如果是的话,就说明跟 inner join的m表没有关系。这个时候需要重新考虑下 t表的PK设计是否合理。
0

oracle支持函数式索引,可以在w表上建函数式索引应该就比较快了

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MYSQL 两个表内联查询和直接查询两张表有什么不同呢?
如下,两条SQL语句: SELECT * FROM TBL_A,TBL_B WHERE TBL_A.ID = TBL_B.ID; SELECT * FROM TBL_A INNER JOIN TBL_B ON TBL_A.ID = TBL_B.ID; 他们有什么区别呢?是否在执行效率上不同,如果有懂的人看到请留个言,谢谢。 ---------------------------------...
两张表联合查询为何没有用上索引?
两张表联合查询为何没有用上索引
mysql 如何按照索引横向拼接两张表的字段, 利用create table as, join on
我本来是建了两张表,各自都有 wind_code, date 两列索引,其它的字段不相同。现在为了数据更新方便点,我希望将两张表的字段拼接起来,最后还只保留两列索引。 假设两张表的名称是stock_est 和 stock_mf ,  我想把这两个表拼接成新的表叫stock_d,最初在我的SQL语句是这么写的  create table stock_d as select * from
MySQL入门——查看指定表的索引情况的两种方式
有的数据表声明了主键列与外键列,有的则没有,那我们就要先查看数据表的索引情况: SHOW INDEX FROM 表名; SHOW INDEX FROM 表名\G; // 以网格的形式呈现 具体命令行案例如下图:
SQL多表连接查询(详细实例)
本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student  截图如下: 表2:course  截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、完全外连接。 1、左连接  left join 或 left outer join SQ
sql内联查询
引言       在项目中一个报表查询功能需要查多张表,用到了内联查询。       代码如下: public DataSet GetConfirmList(FindB_0001InfoEntity entity) { try { Database db = DBHelper.CreateD
MySQL两表关联的连接表该如何创建索引?
原文地址:原文可看大图 问题介绍   创建数据库的索引,可以选择单列索引,也可以选择创建组合索引。   遇到如下这种情况,用户表(user)与部门表(dept)通过部门用户关联表(deptuser)连接起来,如下图所示: 表间关系   问题就是,在这个关联表中该如何建立索引呢? 针对该表,有如下四种选择: 针对于user_uuid建立单列索引idx_user 针对于use...
两张数据表关联查询
笔记一、多表查询     两张表通过关联字段将一张表的company.name赋值给customer.origin     我的思路:         1、使用model查询将数据查询出来,查询结果为数二维组;             $customer_model = model('Customer');             $csr_get = $customer_model->g...
solr创建多表关联索引时子表的索引创建失败
1、data-config.xml配置如下: <dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@133.96.93.111:1521:ARS" user="
两张表自动对比更新VFP程序
两张表自动对比更新两张表自动对比更新两张表自动对比更新两张表自动对比更新两张表自动对比更新
mysql 2个表字符集不同join时不能正确走索引
昨天一个同事做数据迁移引起一个故障,原因是2张表字符集一个为gbk,一个为utf8,并且join key为vachar类型,导致不能正确索引,导致数据库超时,修改字符集编码后正常。本地重现了一下: 一、搞测试数据,文章最后又脚本 二、建索引 --删除多余索引 [code=&quot;sql&quot;]drop INDEX index_student_s_age on student ; drop IN...
SQL RIGHT JOIN 关键字
SQL RIGHT JOIN 关键字 RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。 RIGHT JOIN 关键字语法 SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_n...
全文索引----创建多表solr索引
          我们在使用solr作为索引服务器时,通常会将多个表的多个字段作为联合索引,对多个表快速的数据查询也是solr服务器高效率的体现。这片文章介绍下如何基于多个数据表创建索引。         一 无关联多表创建索引         1.1 数据库准备           我们使用任意的两个表作为数据源,这两个表可以属于一个数据库,也可以属于不同的数据库,如果使用两个数据库,则...
MySQL查询中不使用索引的情况
explain显示了MySQL如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。简单讲,它的作用就是分析查询性能。 explain关键字的使用方法很简单,就是把它放在select查询语句的前面 具体参照:MySQL的Explain关键字查看是否使用索引 1) 如果MySQL估计使用索引比全表扫描更慢,则不使用索引。例如,如果列key均匀分布在1和
Oracle强制使用索引
Oracle强制使用索引: select /*+ INDEX(T_MEDFLOW_INTENT,SYS_C00ADDCODE) */ count(t.addcode) from T_MEDFLOW_INTENT t where 1 = 1 AND (AddCode = '4401' or (1 = 1) or addcode in (SELECT Addcode FR...
sql联合查询(内联、左联、右联、全联)
继上篇《sql内联查询》 引言        上篇谈到了sql内联查询是联合查询的一种,接下里这篇博客就介绍一下其它的查询方法,分别为左联、右联、全联。        还是用上篇博客提到的例子: select * from Name; ID Name 1    张三 2    李四 3    王五 select * from Company;ID Name 1
2013-12月最新号码归属地
2013-12月最新号码归属地,里面分了两张表,建了索引,查询非常快。
利用pandas将多张表按照行索引横向连接到一起,concat的用法
 比如将如下12个月份如图一的表合并成合并成图二的表(这里我已经将inst_id设置为索引,之后都是以它连接) 这里使用concat连接                               图一                                                                                     图二   ...
mysql联结查询时无法使用索引 ——原因:where条件语句中两表字段数据类型不同
今天检查线上慢查询语句时发现一个left join语句不能使用索引,大概情况如下: receipt表和ship表字段ORDER_ID都添加了索引,但explain结果显示语句未走索引 经过检查,发现两表字段ORDER_ID的数据类型不同,一个是int,一个是varchar,修改一致后: 查询时间明显缩短: 所以建表的时候一定要注意字段的数据类型,要处处严谨,不能随意。 ...
mysql表关联中的索引使用情况
mysql在某些情况下可以自动优化表关联的关联条件,如:通过分析条件中的字段是否有索引,关联表中的数据总数之类,通过这些条件mysql便可以实现一些自动优化sql语句的功能。 以下几种情况基本是靠一些简单实验进行验证,没有得到确切的官方文档证实 一、inner join情况下mysql自动优化 表结构细节不做介绍,简单介绍下 bus_creative表中的owner字段和sys_user表
MySQL表字段字符集不同导致的索引失效问题
1. 概述昨天在一位同学的MySQL机器上面发现了这样一个问题,MySQL两张表做left join时,执行计划里面显示有一张表使用了全表扫描,扫描全表近100万行记录,大并发的这样的SQL过来数据库变得几乎不可用了,今天和大家一起分享下这个问题的原因及解决办法,希望可以帮助大家更好的学习MySQL数据库,一起来看看吧。MySQL版本为官方5.7.13。2...
MySQL查询中关联字段字符集不一致会导致查询放弃索引
起因 这个一个填坑的时代,公司业务比较多,因业务发展需要,业务技术部门将系统的用户id由原来的int类型改成varchar类型,然后我负责的项目要依托于业务的用户id,所以我库里的用户id也相应的由int类型变更成varchar类型,但是,由于一时疏忽,我库里的表之前的开发人员设计的时候,把部分表字符集指定成utf8,而另一些表的字符集指定成utf8mb4,最后我在变更字段类型的时候,没统一字段...
全国省市数据库
全国省市数据库,包含储存省份名称和城市名称的两张表。使用时两张表可以结合使用。
pgsql查询表索引实用情况
select  pg_stat_user_tables.relname as tablename,n_live_tup as lines_rowcount,pg_class.reltuples as rowcounts, pg_size_pretty( pg_relation_size(relid)) as tablesize, pg_size_pretty( pg_table_size(reli...
MySQL一次删除两张表
今天遇到了同时删除两张表的问题,试了很多方法都没成功,如果在hibernate的话那就简单了直接使用级联就okay了,但用sql语句一时还是没做出来在网上找到了解决方法(我用的第三种方法): 商品表(product):id  name 图片表(image):id product_id name 对于这两张表,图片表里面关联了商品表的id属性,在我们删除商品的同时就要把它对应的图片信息也得删掉...
索引单表、双表、三表优化
一、索引单表优化 1.建表、插入、查询数据 先建立一张表 我们在里面插入数据 先不建立索引,当我们使用以下语句进行查询时,可以先分析一下性能 explain select id,author_id from article where category_id = 1 and comments &amp;amp;gt; 1 order by views desc limit 1; 可以看到,type 的类型...
mysql两表联合查询的四种情况
一般来说,我们为了得到更完整的结果,我们需要从两个或更多的表中获取结果,我一般都是用select xxx,xxx from 表1,表2 where 表1.xxx=表2.xxx,我们一般都是进行的是这般的操作,其实mysql中还有一种操作,那就是join的操作,例如底下有两个表: 请看 &quot;Persons&quot; 表: Id_P    LastName    FirstName    Address  ...
SQL实现两张无关联表的数据列合并在一张结果集中
SQL实现两张无关联表的数据列合并在一张结果集中实现思路。
Mysql对比两张数据表,得到差异的记录
我们在涉及到数据库相关的的软件开发中,经常会对比两张数据表,得到它们之间的差集。 下面是对应的SQL语句: //table1(%1)中有,table2(%2)中没有的数据 //cmd = QString(&quot;select orderid from %1 where not exists (select * from %2 where %1.orderid = %2.orderid)&quot;).arg...
mysql查询没有关联的三张表
因为业务需求,遇到了这么一个查询,本想一个联合查询就完事了,谁知三张表之间没有任何关联,这就使我苦恼了半天,终于想出了解决办法。 首先,三张表之间没有任何关联,字段也不尽相同,我们要使查询结果合并就需要使用  union all  关键字(过滤重复数据使用union 就可以了) 假设我们有三张表 user,info,system 查询如下 select * from ( (select ...
【心得】不建立主外键关系也可以关联两个表;
用主外键关系可以关联两个或多个表,进行查询,但是,我也可以使用where tableName1.column1=tableName2.column2;来查询,差别不大,这个逻辑怎么理解?我是这么理解的,你是个男的,你要找一个女人生孩子,你可以找个老婆,确立夫妻关系,然后生宝宝。你也可以找一个女人为你生宝宝,但是不结婚。前者就是建立主外键关系,夫妻关系就是你们的约束。后者就是where条件,后者更灵
查看一张表里索引数
select owner, table_name, count(*)       from all_indexes      group by owner, table_name     having count(*) >= 5;
数据库索引与多表联查
数据库的建立和删除 创建数据库  create database test; 删除数据库  Drop database test; 查询数据库  Desc database test; 使用数据库 Use database test; 数据库三范式 原子性: 每列的字段都是不可分的主键依赖: 每列都和主键有依赖不是主键的列之间不能相互依赖 建表
oracle 查出2张表不同的记录(即A表有,B表却没有)
oracle 查出2张表不同的记录(即A表有,B表却没有)原型:  select *  from t_user1  a    where not exists   (select  *  from  t_user2  b where a.id=b.id );   例子,A表有,苹果,梨,西瓜,香蕉,----&amp;gt;&amp;gt;&amp;gt;&amp;gt; B表有,苹果,梨,香蕉, 查询结果应该是:西瓜。...
MySql使用索引和不使用索引的几种情况
索引是优化sql查询速度的重要优化方式,但是在存在索引时,有一些情况会使用索引,有一些情况下不会使用索引。 使用索引的情况如下: 1.对索引进行全值匹配,例如一个组合索引包括3列,当查询语句中出现indexA=A and indexB=B and indexC=C这样的语句时,会使用索引。 2.对B-Tree索引进行范围匹配,当索引类型为B—Tree索引时,类似于indexA > A and
MySQL中查询不使用索引的情况汇总
有索引,但用不上的情况: 在数据库表中,使用索引可以提高查询速度。但是索引并不是对所有的查询操作都会生效的。比如以下几种情况,将导致索引失效: 1、如果查询条件用or,必须or条件中的每个列都加上索引,否则无效。 2、对于复合索引(又叫多列索引或者联合索引),如果查询的列不使用复合索引的第一部分,则不使用索引。例如,tb表的复合索引为(key1,key2,key3),则查询select *
怎么用sql,条件筛选写出一个表与另一个表关联的数据和没关联的,两个表没有直接关系,通过中间表连接的
今天写项目遇到一个问题,就是有两张表A表,B表,还有一张A-B关系表,两张表的关系是通过A-B关系表一一对应的,现在我有个需求就是,我现在从A表出发,条件查询出来A表中跟B表关联的数据, 直接上SQL语句 SELECT di.id, di.CODE, di.device_name, di.camera_type, di.decive_contour, di.rg_group_i...
mysql将两张表的两个列连接后更新到第三张表中
需求,现在有小区表community 单元楼表flat 房间表 现在要将community中小区地址和flat中门牌号拼接更新到room表中fullAddress中。 实现如下: UPDATE room r LEFT JOIN flat f ON f.id=r.flatID LEFT JOIN community c ON c.id=f.communityID S
Mysql 使用主键查询未应用主键索引问题
建了一张表cust_stat.performance,主键设为ym和uid,使用下面的语句查看执行计划。explain select * from cust_stat.performance where ym='201805'结果发现mysql并没有应用主键索引。给ym字段单独加上索引以后,发现查询正常应用了索引。推断估计是如果是联合主键,自动建的也是联合主键索引,如果只有一个查询条件还是会进行全...
python 合并表记录
''' 题目描述 数据表记录包含表索引和数值,请对表索引相同的记录进行合并,即将相同索引的数值进行求和运算,输出按照key值升序进行输出。 输入描述: 先输入键值对的个数 然后输入成对的index和value值,以空格隔开 输出描述: 输出合并后的键值对(多行) 示例1 输入 4 0 1 0 2 1 2 3 4 输出 0 3 1 2 3 4 ''' line_num=int(input()...