千家信息网

ORACLE MYSQL中join 字段类型不同索引失效的情况有哪些

发表于:2025-01-22 作者:千家信息网编辑
千家信息网最后更新 2025年01月22日,小编给大家分享一下ORACLE MYSQL中join 字段类型不同索引失效的情况有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了
千家信息网最后更新 2025年01月22日ORACLE MYSQL中join 字段类型不同索引失效的情况有哪些

小编给大家分享一下ORACLE MYSQL中join 字段类型不同索引失效的情况有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

脚本如下:


mysql:
drop table testjoin1;
drop table testjoin2;
create table testjoin1(id int, name varchar(20));
create table testjoin2(id varchar(20),name varchar(20),key(id);


oracle:
drop table testjoin1;
drop table testjoin2;
create table testjoin1(id int,name varchar2(20));
create table testjoin2(id varchar(20),name varchar2(20));
create index test_id_2 on testjoin2(id);


insert into testjoin1 values(1,'gaopeng');
insert into testjoin1 values(2,'gaopeng');
insert into testjoin1 values(3,'gaopeng');
insert into testjoin1 values(4,'gaopeng');
insert into testjoin1 values(5,'gaopeng');
insert into testjoin2 values('1','gaopeng');




ORACLE中的隐士转换,
SQL> select /*+ use_nl(a b) ordered */ * from testjoin1 a join testjoin2 b on a.id=b.id ;

ID NAME ID NAME
---------- -------------------- -------------------- --------------------
1 gaopeng 1 gaopeng

Execution Plan
----------------------------------------------------------
Plan hash value: 2498279186


--------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 49 | 5 (0)| 00:00:01 |
| 1 | NESTED LOOPS | | 1 | 49 | 5 (0)| 00:00:01 |
| 2 | TABLE ACCESS FULL| TESTJOIN1 | 5 | 125 | 2 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL| TESTJOIN2 | 1 | 24 | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("A"."ID"=TO_NUMBER("B"."ID")) --虽然TESTJOIN2是被驱动表由于隐士转换索引用不到

mysql> explain select * from testjoin1 a Straight_JOIN testjoin2 b on a.id=b.id ;
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------------------------------------------+
| 1 | SIMPLE | a | NULL | ALL | NULL | NULL | NULL | NULL | 5 | 100.00 | NULL |
| 1 | SIMPLE | b | NULL | ALL | id | NULL | NULL | NULL | 1 | 100.00 | Using where; Using join buffer (Block Nested Loop) |
+----+-------------+-------+------------+------+---------------+------+---------+------+------+----------+----------------------------------------------------+
2 rows in set, 3 warnings (0.00 sec)

Warning (Code 1739): Cannot use ref access on index 'id' due to type or collation conversion on field 'id' --虽然TESTJOIN2是被驱动表由于隐士转换索引用不到 possible_keys可以看出
Warning (Code 1739): Cannot use range access on index 'id' due to type or collation conversion on field 'id'
Note (Code 1003): /* select#1 */ select `test`.`a`.`id` AS `id`,`test`.`a`.`name` AS `name`,`test`.`b`.`id` AS `id`,`test`.`b`.`name` AS `name` from `test`.`testjoin1` `a` straight_join `test`.`testjoin2` `b` where (`test`.`a`.`id` = `test`.`b`.`id`)

以上是"ORACLE MYSQL中join 字段类型不同索引失效的情况有哪些"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

篇文章 隐士 不同 字段 情况 类型 索引 内容 驱动 不怎么 大部分 更多 知识 脚本 行业 资讯 资讯频道 频道 参考 学习 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 山东省服务好的浪潮服务器经销 国外网络安全专业硕士就业排名 腾讯云数据库 外网ip 铁路网络安全红线问题包括哪些 哈利波特魔法觉醒能跨服务器吗 学软件开发到哪个机构学习靠谱 安卓软件开发 注册机 阿里云学生服务器配置 为网络安全做出贡献的人 软件开发网络设计那个更好 什么是网络安全服务中心 了解网络安全法的安全条款有 民国报刊数据库 端游绝地求生连接不了服务器 金蝶迷你版 没有初始数据库 连云港品质联想服务器供应商 mysql清除部分数据库 怀旧服服务器最高是多少 武装突袭3服务器 小学生网络安全小故事(案例) 服务器影子系统 结合自身实际如何维护网络安全 复杂产品设计表数据库 郑州最好的软件开发公司是谁家 如何用t-sql删除数据库 从java到软件开发 速达3000如何找到数据库 木业批量优化排版软件开发 软件开发的销售收入 饥荒云服务器搭建教程
0