函式索引的儲存
做一個很有意思的試驗:
SQL> create table t as select rownum a from all_objects where rownum < 11; Table created SQL> select table_name,column_name from user_tab_cols; TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ T A SQL> create index t_ind on t(a+100); Index created SQL> select table_name,column_name from user_tab_cols; TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ T A T SYS_NC00002$ 這裡可以看到表t多出來一個列SYS_NC00002$ SQL> select a, SYS_NC00002$ from t; A SYS_NC00002$ ---------- ------------ 1 101 2 102 3 103 4 104 5 105 6 106 7 107 8 108 9 109 10 110 10 rows selected 從查詢的結果可以看到這個列就是我們的函式索引的值。 SQL> |
這是一個很有意思的事情,資料庫已經將數值算出來了,究竟這些數值是放在哪裡?
SQL> exec dbms_stats.gather_table_stats(user,'T'); PL/SQL procedure successfully completed SQL> select table_name,blocks from user_tables where table_name='T'; TABLE_NAME BLOCKS ------------------------------ ---------- T 4 SQL> create index t_ind1 on t(rpad(to_char(a),4000,'*')); Index created SQL> select table_name,column_name from user_tab_cols where table_name='T'; TABLE_NAME COLUMN_NAME ------------------------------ ------------------------------ T A T SYS_NC00002$ T SYS_NC00003$ SQL> select a, SYS_NC00002$, SYS_NC00003$ from t; A SYS_NC00002$ SYS_NC00003$ ---------- ------------ -------------------------------------------------------------------------------- 1 101 1******************************************************************************* 2 102 2******************************************************************************* 3 103 3******************************************************************************* 4 104 4******************************************************************************* 5 105 5******************************************************************************* 6 106 6******************************************************************************* 7 107 7******************************************************************************* 8 108 8******************************************************************************* 9 109 9******************************************************************************* 10 110 10****************************************************************************** 10 rows selected SQL> exec dbms_stats.gather_table_stats(user,'T'); PL/SQL procedure successfully completed SQL> select table_name,blocks from user_tables where table_name='T'; TABLE_NAME BLOCKS ------------------------------ ---------- T 4 |
在這裡可以看到表並沒有增加儲存空間,但是這些數值會存放在哪裡哪?收集一下資訊可以看到這些數值是存放在索引上,但是在表上會有一個系統命名的列名。
SQL> select index_name ,leaf_blocks from user_indexes where table_name='T'; INDEX_NAME LEAF_BLOCKS ------------------------------ ----------- T_IND 1 T_IND1 10 |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/222350/viewspace-909446/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 儲存函式儲存函式
- day25-索引和函式及儲存過程索引函式儲存過程
- Mysql 的儲存過程和儲存函式MySql儲存過程儲存函式
- 儲存過程與儲存函式儲存過程儲存函式
- mysql儲存函過程和儲存函式都屬於儲存程式MySql儲存函式
- 儲存過程 函式儲存過程函式
- SQL---------儲存函式SQL儲存函式
- mysql和orcale的儲存過程和儲存函式MySql儲存過程儲存函式
- 儲存過程與函式儲存過程函式
- MySQL 儲存函式及呼叫MySql儲存函式
- MySQL 儲存過程和函式MySql儲存過程函式
- MySQL儲存過程 (即函式)MySql儲存過程函式
- MySQL儲存過程和函式MySql儲存過程函式
- mySql 儲存過程與函式MySql儲存過程函式
- SQL server儲存過程函式SQLServer儲存過程函式
- 儲存過程和函式的區別儲存過程函式
- MySQL入門--儲存過程(PROCEDURE)和儲存函式(FUNCTION)MySql儲存過程儲存函式Function
- 索引儲存小記索引
- 函式索引使用細節——自定義函式的索引化函式索引
- MySQL入門系列:儲存程式(二)之儲存函式簡介MySql儲存函式
- 儲存過程vs.函式QM儲存過程函式
- mysql儲存過程基本函式(轉)MySql儲存過程函式
- mysql儲存過程procedure、函式function的用法MySql儲存過程函式Function
- PL/SQL 中的儲存過程與函式SQL儲存過程函式
- 分散式文件儲存資料庫之MongoDB索引管理分散式資料庫MongoDB索引
- 移動索引的儲存過程索引儲存過程
- SQL中儲存過程和函式的區別SQL儲存過程函式
- MySQL建立隨機生成電話的儲存函式MySql隨機儲存函式
- 行式儲存 列式儲存
- (Oracle)儲存過程、儲存函式和包的相關知識與例項Oracle儲存過程儲存函式
- SQLServeronLinux列儲存索引SQLServerLinux索引
- MySQL自定義函式與儲存過程MySql函式儲存過程
- 七、函式-儲存過程-觸發器函式儲存過程觸發器
- PLSQL學習-【7儲存過程、函式】SQL儲存過程函式
- 從PL/SQL儲存函式返回陣列SQL儲存函式陣列
- MySQL 5.5 建立儲存過程和函式MySql儲存過程函式
- MySQL4:儲存過程和函式MySql儲存過程函式
- openGauss 函式及儲存過程支援函式儲存過程