日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當(dāng)前位置:首頁 > 數(shù)據(jù)庫 > 數(shù)據(jù)庫應(yīng)用 > Oracle的隱式轉(zhuǎn)換

Oracle的隱式轉(zhuǎn)換

來源:程序員人生   發(fā)布時間:2015-03-17 08:31:09 閱讀次數(shù):3383次
都說Oracle存在NUMBER和VARCHAR2類型的隱式轉(zhuǎn)換,嚴(yán)格意義上需要避免,但為什么需要避免,從下面的實驗進行驗證。

1. 創(chuàng)建測試表和索引
create table tn (id number, name varchar2(1));
create index idx_tn on tn (id);
create index idx_tn on tn (name);
分別對NUMBER類型的id字段,VARCHAR2類型的name字段創(chuàng)建索引。

2. 查看VARCHAR2->NUMBER的隱式轉(zhuǎn)換
SQL> select * from tn where id = 1;
no rows selected

Execution Plan
----------------------------------------------------------
Plan hash value: 3532270966
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 13 | 1 (0)| 00:00:01 |
|* 1 | INDEX RANGE SCAN| IDX_TN | 1 | 13 | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------
"where id = 1"用的是列索引范圍掃描。

SQL> select * from tn where id = '123';
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 3532270966
---------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
---------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 13 | 1 (0)| 00:00:01 |
|* 1 | INDEX RANGE SCAN| IDX_TN | 1 | 13 | 1 (0)| 00:00:01 |
---------------------------------------------------------------------------
"where id = '123'",Oracle會將字符類型的123轉(zhuǎn)換為NUMBER類型進行比較,此處仍可以使用索引范圍掃描,說明VARCHAR2->NUMBER的隱式轉(zhuǎn)換,未對索引產(chǎn)生影響

3. 查看NUMBER->VARCHAR2的隱式轉(zhuǎn)換
SQL> select * from tn where name = '123';
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 479240418
-------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 | 1 (0)| 00:00:01 |
| 1 | TABLE ACCESS BY INDEX ROWID| TN | 1 | 15 | 1 (0)| 00:00:01 |
|* 2 | INDEX RANGE SCAN | IDX_TN_NAME | 1 | | 1 (0)| 00:00:01 |
-------------------------------------------------------------------------------------------
"where name = '123'"使用的是索引范圍掃描。

SQL> select * from tn where name = 123;
no rows selected
Execution Plan
----------------------------------------------------------
Plan hash value: 2655062619
--------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 15 | 2 (0)| 00:00:01 |
|* 1 | TABLE ACCESS FULL| TN | 1 | 15 | 2 (0)| 00:00:01 |
--------------------------------------------------------------------------
"where name = 123",Oracle會將數(shù)值類型的123轉(zhuǎn)換為VARCHAR2字符類型,和name進行比較,此處用了全表掃描,說明name的列索引失效

總結(jié)
1. NAME和VARCHAR2之間可以進行隱式轉(zhuǎn)換,其中VARCHAR2->NUMBER不會致使索引失效,NUMBER->VARCHAR2會讓索引失效,因此這類隱式轉(zhuǎn)換,是需要注意避免。
2. 之所以VARCHAR2->NUMBER不會讓索引失效,我猜想是轉(zhuǎn)換為where id = to_number('123')。NUMBER->VARCHAR2會讓索引失效,我猜想是轉(zhuǎn)換為where to_number(name) = 123。
3. 引伸知識點,之所以上面id和name使用的是索引范圍掃描,是由于建立的是非唯1B樹索引,如果是unique索引,則會使用UNIQUE INDEX SCAN的掃描方式。
生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學(xué)習(xí)有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 日本免费视频在线观看 | 成人在线亚洲 | 亚洲第一天堂无码专区 | 欧美午夜一区二区三区 | 日韩视频在线一区二区 | 999久久久国产精品 国产精品久久久久久久免费软件 | 国产一区二区精品久久 | av高清在线观看 | 欧美在线综合视频 | 久久久www成人免费精品 | www.久久久| 九九综合久久 | 日本综合在线视频 | 一区在线免费观看 | 99久久亚洲精品 | 麻豆视频一区二区 | ree性亚洲88av | 国产欧美一区二区精品性色 | 51久久夜色精品国产麻豆 | 精品久久a | 国产成人精品在线 | 国产精品av在线 | 午夜成人在线视频 | 免费av网站在线看 | 欧美精品成人一区二区在线观看 | 牛牛av | 成人精品一区二区三区视频播放 | 亚洲成av人片在线观看无码 | 欧美日韩电影在线观看 | 一区二区三区四区在线视频 | 在线视频精品一区 | 影视av久久久噜噜噜噜噜三级 | 午夜精品一区二区三区在线播放 | 日韩一区二区精品视频 | 国产一区二区毛片 | 天堂网2017| 亚洲精品成人在线 | 中文字幕亚洲一区二区三区 | 精产国产伦理一二三区 | 一区二区日韩精品 | 欧美精品黄 |