目錄
收集統(tǒng)計(jì)信息. 3
1. 通過(guò)DBMS_STATS包中的方法. 3
2、刪除指定表的統(tǒng)計(jì)信息. 3
執(zhí)行計(jì)劃. 3
常用執(zhí)行計(jì)劃操作符. 4
統(tǒng)計(jì)指定sql執(zhí)行號(hào)的所有操作符的執(zhí)行時(shí)間. 5
HINT 5
并行操作:. 6
查詢計(jì)劃重用、結(jié)果集重用. 7
示例. 8
1、收集統(tǒng)計(jì)信息:. 8
3、對(duì)sql搜集統(tǒng)計(jì)信息. 9
2、添加索引. 9
使用優(yōu)化器提示HINT:. 10
索引. 12
創(chuàng)建索引. 12
管理索引. 13
創(chuàng)建全局非分區(qū)索引. 14
創(chuàng)建全局分區(qū)索引. 14
創(chuàng)建局部索引. 15
創(chuàng)建聚集索引. 15
創(chuàng)建唯一索引. 15
索引查詢. 16
重建索引. 16
刪除索引. 16
查看索引信息. 16
數(shù)據(jù)庫(kù)優(yōu)化3個(gè)方面:
1、統(tǒng)計(jì)信息收集:統(tǒng)計(jì)信息準(zhǔn)確,優(yōu)化器選擇執(zhí)行計(jì)劃才能真正做到最優(yōu)。
2、建立合適的索引
3、DM.ini參數(shù)的優(yōu)化
其他的:增加HINT,SQL改寫(xiě)等
收集統(tǒng)計(jì)信息
查看有沒(méi)有收集統(tǒng)計(jì)信息:
select NUM_ROWS,LAST_ANALYZED,TEMPORARY from USER_TABLES where TABLE_NAME='EMP';
NUM_ROWS字段,如果沒(méi)有收集通常是空
LAST_ANALYZED 代表收集的時(shí)間,如果沒(méi)有收集這個(gè)字段也是空
TEMPORARY字段附帶說(shuō)明,N表示不是臨時(shí)表臨時(shí)表不需要收集
手動(dòng)收集有三種可選方式
1. 通過(guò)DBMS_STATS包中的方法
(GATHER_TABLE_STATS、GATHER_INDEX_STATS 或 GATHER_SCHEMA_STATS)
DBMS_STATS.GATHER_TABLE_STATS('SYSDBA','EMP',null,100,TRUE,'FOR ALL COLUMNS SIZE AUTO');
用戶、表、不是分區(qū)表名填寫(xiě)NULL默認(rèn)也是NULL區(qū)分大小寫(xiě)、采樣百分比、保留參數(shù)默認(rèn)寫(xiě)TRUE、控制列的統(tǒng)計(jì)信息集合和直方圖的創(chuàng)建的格式默認(rèn)填寫(xiě)FOR ALL COLUMNS SIZE AUTO表示所有列收集
或者:效果一樣
SP_TAB_STAT_INIT ('SYSDBA','EMP');
2、刪除指定表的統(tǒng)計(jì)信息
SP_TAB_STAT_DEINIT ('SYSDBA', 'DEPT');
執(zhí)行計(jì)劃
explain select * from emp;
1、縮進(jìn)越深的越先執(zhí)行。
2、同樣縮進(jìn)的上面的先執(zhí)行,下面的后執(zhí)行。
3、上下的優(yōu)先級(jí)高于內(nèi)外。
?
常用執(zhí)行計(jì)劃操作符
CSCN2:聚集索引全表掃描
SSCN:直接使用二級(jí)索引進(jìn)行掃描
SSEK2:二級(jí)索引定位
CSEK2:聚集索引數(shù)據(jù)定位
BLKUP:二次回表
DISTINCT:除重
SLCT2:查詢條件過(guò)濾操作符
DSCN:動(dòng)態(tài)視圖表掃描
ESCN:外部表掃描
SORT2:排序
STAT:統(tǒng)計(jì)信息計(jì)算
PRJT2:關(guān)系的投影(project) 運(yùn)算,用于選擇表達(dá)式項(xiàng)的計(jì)算
PRJT2:投影運(yùn)算,選擇表達(dá)式的計(jì)算
exp_num:映射列數(shù)
is_atom:是否要求單行數(shù)據(jù)
NSET2 表示收集結(jié)果集的操作符
表連接:
HASH JOIN:HASH鏈接 --大表和大表關(guān)聯(lián)
NEST LOOP JOIN:嵌套循環(huán)連接 --小表和大表關(guān)聯(lián)
MERGE JOIN:MERGE鏈接
執(zhí)行順序方式(1-2-3-5 - 4-6 - 7-8-9): --有分支的上下優(yōu)先級(jí)最高
e1表二級(jí)索引掃描,e表全表掃描,e1根據(jù)索引二次回表查詢,嵌套循環(huán)連接(e和e1都是小表)組成新的表
d表二級(jí)索引掃描,d表根據(jù)索引二次回表查詢,前兩個(gè)表(e和e1)組成的小表再與d表嵌套循環(huán)
返回結(jié)果
統(tǒng)計(jì)指定sql執(zhí)行號(hào)的所有操作符的執(zhí)行時(shí)間
需要ini參數(shù):ENABLE_MONITOR=1、MONITOR_TIME=1 和 MONITOR_SQL_EXEC=1
MONITOR_SQL_EXEC為會(huì)話級(jí)動(dòng)態(tài)參數(shù),可以設(shè)置只針對(duì)當(dāng)前會(huì)話開(kāi)啟,不建議參數(shù)級(jí)別開(kāi)啟。
select SF_GET_PARA_VALUE(1,'MONITOR_SQL_EXEC');
SP_SET_PARA_VALUE(1,'MONITOR_SQL_EXEC',1);
或
SF_SET_SESSION_PARA_VALUE('MONITOR_SQL_EXEC',1);
SP_SET_PARA_VALUE(1,'ENABLE_MONITOR',1);
SP_SET_PARA_VALUE(1,'MONITOR_TIME',1);
ET( id_in bigint )
id_in sql執(zhí)行后產(chǎn)生的執(zhí)行號(hào)
HINT
DBA 對(duì)于數(shù)據(jù)分布是很清楚的,知道SQL語(yǔ)句按照哪種方法執(zhí)行會(huì)最快。
在這種情況下,DBA 可以主動(dòng)進(jìn)行人工干預(yù),指示優(yōu)化器按照指定的方法去選擇 SQL的執(zhí)行計(jì)劃。
人工干預(yù)優(yōu)化器的方法稱為 HINT。
它使優(yōu)化器根據(jù) DBA 的 HINT 提示來(lái)生成指定的執(zhí)行計(jì)劃。
如果優(yōu)化器無(wú)法生成相應(yīng)的執(zhí)行計(jì)劃,該 HINT 將會(huì)被忽略。
1)Hint格式
/*+ <具體的Hint內(nèi)容> */
2)Hint在SQL中必須緊跟關(guān)鍵字SELECT、INSERT、UPDATE、DELETE或MERGE之后
{SELECT | INSERT | UPDATE | DELETE | MERGE} /*+ <具體的Hint內(nèi)容> */
3)Hint中第一個(gè)星號(hào)(*)和加號(hào)(+)之間不能有空格
4)Hint中加號(hào)(+)和具體的Hint內(nèi)容之間可以有空格,也可以沒(méi)有空格,但通常都有空格。
5)Hint中的具體內(nèi)容可以是單個(gè)Hint,也可以是多個(gè)Hint的組合,各個(gè)Hint間至少需要1個(gè)空格來(lái)彼此分隔。
6)Hint中指定具體對(duì)象時(shí)(比如指定表名或者索引名),不能帶上該對(duì)象所在SCHEMA的名稱,即使該SQL文本中已經(jīng)有對(duì)應(yīng)的SCHEMA名稱。
explain select /*+ NO_INDEX(emp,EMP_IDX) */ * from sysdba.emp where EMPLOYEE_ID=100;
?
7)Hint中指定具體表名時(shí),如果該表在對(duì)應(yīng)SQL文本中有別名(alias),則應(yīng)該使用該表的別名。
explain select /*+ NO_INDEX(e,EMP_IDX) */ * from emp e where e.EMPLOYEE_ID=100;
?
支持使用 HINT 的 INI 參數(shù)可通過(guò) V$HINT_INI_INFO 動(dòng)態(tài)視圖查詢。
select * from v$hint_ini_info where para_name='ENABLE_HASH_JOIN';
并行操作:
SELECT /*+ PARALLEL(emp 4) */ * FROM emp;
或者:多個(gè)重復(fù)hint以最后一個(gè)為準(zhǔn)
SELECT /*+ PARALLEL(1) *//*+ PARALLEL(2) */ * FROM emp;
select SF_GET_PARA_VALUE(1,'PARALLEL_POLICY');
使用手動(dòng)并行模式時(shí),只需要在 INI 參數(shù)中設(shè)置好如下 2 個(gè)參數(shù),然后執(zhí)行并行 SQL查詢語(yǔ)句時(shí),需手動(dòng)指定當(dāng)前并行任務(wù)個(gè)數(shù)。
若不指定,將不使用并行。設(shè)置的 2 個(gè)參數(shù)如下:
PARALLEL_POLICY 2
PARALLEL_THRD_NUM 4
使用自動(dòng)并行模式時(shí),一般指定如下三個(gè)參數(shù):
MAX_PARALLEL_DEGREE 3
PARALLEL_POLICY 1
PARALLEL_THRD_NUM 10
另外,當(dāng) PARALLEL_POLICY 為 0 時(shí),即使有并行任務(wù),也不支持并行。
查詢計(jì)劃重用、結(jié)果集重用
DBA 可以通過(guò)在 SQL 語(yǔ)句中設(shè)置 "RESULT_CACHE"或"NO_RESULT_CACHE" HINT手動(dòng)指示查詢的結(jié)果集是否緩存。如:
explain select /*+ RESULT_CACHE */ * from emp where emp.employee_id=100;
或者
explain select /*+ NO_RESULT_CACHE */ * from emp where emp.employee_id=100;
創(chuàng)建emp和dep各插入大量數(shù)據(jù)
?
select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
?
select /*+ RESULT_CACHE */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
select /*+ NO_RESULT_CACHE */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
本示例中結(jié)果集重用不重用本次基本沒(méi)效果。
示例
查看執(zhí)行計(jì)劃
explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
全是CSCN2全表掃描,且執(zhí)行計(jì)劃預(yù)估值偏差很大7221行實(shí)際返回10201行
1、收集統(tǒng)計(jì)信息:
select NUM_ROWS,LAST_ANALYZED,TEMPORARY from USER_TABLES where TABLE_NAME='EMP';
SP_TAB_STAT_INIT ('SYSDBA','EMP');
SP_TAB_STAT_INIT ('SYSDBA','DEP');
再次執(zhí)行
select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
這里基本沒(méi)效果:貌似因?yàn)椴皇菆?zhí)行計(jì)劃步驟問(wèn)題,雖然執(zhí)行計(jì)劃預(yù)估值有問(wèn)題,但是執(zhí)行計(jì)劃步驟沒(méi)問(wèn)題,不管是否收集統(tǒng)計(jì)信息均按執(zhí)行計(jì)劃步驟走,所以這里效果不明顯。
3、對(duì)sql搜集統(tǒng)計(jì)信息
--先創(chuàng)建索引后又收集sql統(tǒng)計(jì)信息
SP_SQL_STAT_INIT ('select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100');
explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
效果顯著
2、添加索引
create index emp_idx on emp(EMPLOYEE_ID);
create index dep_idx on dep(DEPARTMENT_ID);
?
效果非常明顯
?
使用優(yōu)化器提示HINT
需要注意的是:如果 HINT 的語(yǔ)法沒(méi)有寫(xiě)對(duì)或指定的值不正確,DM 并不會(huì)報(bào)錯(cuò),而是直接忽略 HINT 繼續(xù)執(zhí)行。
支持 HINT 的INI 參數(shù)分為兩類:
一是 HINT_TYPE 為"OPT",表示分析階段使用的參數(shù);
二是HINT_TYPE為"EXEC",表示運(yùn)行階段使用的參數(shù),運(yùn)行階段使用的參數(shù)對(duì)于視圖無(wú)效。
explain select * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
不使用hash join連接
explain select /*+ ENABLE_HASH_JOIN(0) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
EXPLAIN SELECT /*+ ENABLE_HASH_JOIN(1) */ * FROM T1,T2 WHERE T1.C1 = T2.D1; --這個(gè)還是next loop嵌套循環(huán)啊
使用了 HINT,指明在執(zhí)行此 SQL 時(shí)參數(shù) ENABLE_HASH_JOIN 被置為 1。
SELECT /*+ INDEX(T1, IDX_T1_ID) */ * FROM T1 ;
SELECT /*+ INDEX(A IDX_T1_NAME)*/ * FROM T1 A WHERE ID > 2011 AND NAME < 'XXX' ORDER BY NAME;
explain select /*+ NO_INDEX(EMP,EMP_IDX) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
EXPLAIN SELECT /*+ USE_HASH(T1,T2) */ * FROM T1,T2 WHERE T1.C1 = T2.D1; --這個(gè)才是使用hash連接
EXPLAIN SELECT /*+ NO_USE_HASH(T1,T2) */ * FROM T1, T2 WHERE T1.C1 = T2.D1; --不使用hash連接
explain select /*+ NO_USE_HASH(emp,dep) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100; --這個(gè)沒(méi)效果
?
--強(qiáng)制兩個(gè)表間使用嵌套循環(huán)連接
EXPLAIN SELECT /*+ USE_NL(A, B) */ * FROM T1 A, T2 B WHERE A.C1 = B.D1;
explain select /*+ USE_NL(emp,dep) */ * from emp,dep where emp.DEPARTMENT_ID=DEP.DEPARTMENT_ID and EMP.EMPLOYEE_ID=100;
?
NO_USE_NL 強(qiáng)制兩個(gè)表間不能使用嵌套循環(huán)連接
USE_NL_WITH_INDEX 當(dāng)連接情況為左表+右表索引時(shí),強(qiáng)制兩個(gè)表間使用索引連接
EXPLAIN SELECT /*+ USE_NL_WITH_INDEX(T1, IDX_T1_C1) */ * FROM T1, T2 WHERE T1.C1 = T2.D1;
NO_USE_NL_WITH_INDEX 當(dāng)連接情況為左表+右表索引時(shí),強(qiáng)制兩個(gè)表間不能使用索引連接
USE_MERGE強(qiáng)制兩個(gè)表間使用歸并連接。歸并連接所用的兩個(gè)列都必須是索引列。
NO_USE_MERGE強(qiáng)制兩個(gè)表間不能使用歸并連接
等。
貌似還可以直接指定dm.ini文件中的參數(shù)
select * from v$hint_ini_info where para_name='VIEW_PULLUP_FLAG';
?
explain select /*+ VIEW_PULLUP_FLAG(3) */ * from v_emp;
?
索引
創(chuàng)建索引
create index emp_idx on emp(employee_id);
select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';
索引占用空間(頁(yè)數(shù))
select index_used_space(33555482);
索引使用頁(yè)數(shù)
select index_used_pages(33555482);
指定聚集索引鍵:--每張表中只允許有一個(gè)聚集索引
1. CLUSTER PRIMARY KEY:指定列為聚集索引鍵,并同時(shí)指定為主鍵,稱為聚集主鍵;
2. CLUSTER KEY:指定列為聚集索引鍵,但是是非唯一的;
3. CLUSTER UNIQUE KEY:指定列為聚集索引鍵,并且是唯一的。
查詢主鍵(聚簇索引鍵并刪除修改)
SELECT CONSTRAINT_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP1';
alter table emp1 drop constraint "CONS134218794"; --主鍵可以直接刪,聚集主鍵不能直接刪,需要再創(chuàng)建一個(gè)聚集主鍵而使其變?yōu)榉蔷奂麈I后再刪。(create cluster index name_dept on dept(name); )
?
?
create cluster index emp_c_idx on emp1(employee_name);
--創(chuàng)建聚集主鍵后上面創(chuàng)建的聚集索引 自動(dòng)刪除了。
--創(chuàng)建聚集索引后上面創(chuàng)建的聚集主鍵 沒(méi)有自動(dòng)刪除,但是可以執(zhí)行手動(dòng)刪除了。
?
管理索引
索引分類:
物理存儲(chǔ)角度
聚集索引:表數(shù)據(jù)存儲(chǔ)在 B 樹(shù)葉子節(jié)點(diǎn)上,定位索引可直接在B樹(shù)中找到數(shù)據(jù)。每一個(gè)表有且只有一個(gè)聚集索引。同一張表創(chuàng)建另一個(gè)聚集索引時(shí),前一個(gè)貌似會(huì)被自動(dòng)刪除。
非聚集索引:二級(jí)索引列和聚集索引列共同存儲(chǔ)在B 樹(shù)葉子節(jié)點(diǎn)上。如果查找索引鍵值以外的數(shù)據(jù),則需要回到一級(jí)索引中進(jìn)行查找。每一個(gè)表可以有多個(gè)非聚集索引。
create cluster index EMP1 on t1(EMPLOYEE_NAME); --聚集索引
create index s1 on EMP1(EMPLOYEE_ID); --非聚集索引
==
select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_C_IDX';
SELECT CONSTRAINT_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP1'; --聚集索引不是約束,這里查不到,之前創(chuàng)建主鍵或者聚集主鍵時(shí)是約束
==
功能角度分類
可分為唯一索引、函數(shù)索引、位圖索引、位圖連接索引、全文索引、空間索引、數(shù)組索引、普通索引。
虛實(shí)角度分類
分為虛索引和實(shí)索引。
虛索引:創(chuàng)建 PRIMARY KEY 主鍵約束或 UNIQUE 唯一約束時(shí),系統(tǒng)會(huì)自動(dòng)創(chuàng)建一個(gè)相關(guān)的唯一索引。因?yàn)椴恍枰脩魟?chuàng)建,因此稱為虛索引。
實(shí)索引:虛索引以外的索引均為實(shí)索引。
索引鍵值個(gè)數(shù)分類:
單列索引和復(fù)合索引。
分區(qū)的角度進(jìn)行分類:
全局索引和局部索引。全局索引和局部索引均為二級(jí)索引,專門(mén)用于水平分區(qū)表中。
全局索引 (GLOBAL) 是以整張表的數(shù)據(jù)為對(duì)象而建立的索引。全局索引的日常維護(hù)成本高于局部索引。
全局索引具體分為兩種:全局非分區(qū)索引和全局分區(qū)索引。指定了<PARTITION 子句>的索引即為分區(qū)索引。只有 DMDPC 功能支持分區(qū)索引。
創(chuàng)建全局非分區(qū)索引
create index part_dept_idx on dept_part(id) global;
explain select * from dept_part where id = 2; --全局分區(qū)索引查詢
explain select * from dept_part partition (p2022) where id = 2; --直接對(duì)分區(qū)子表查詢,則使用全局本地索引
創(chuàng)建全局分區(qū)索引
create index part_dept_idx_f on dept_part(name) global partition by range(name)
(
partition p1 values less than (100) storage(on TS_HR_IDX),
partition p2 values less than (maxvalue) storage(on TS_HR_IDX)
);
explain select * from dept_part where name = 'dd'; //當(dāng)數(shù)據(jù)量很大時(shí)
explain select * from dept_part index part_dept_idx_f where name = 'dd'; //或直接指定全局索引
explain select * from DEPT_PART partition (p2022) where name = 'dd'; //直接對(duì)分區(qū)子表查詢,則使用全局本地索引
局部索引:局部索引是在分區(qū)表的每個(gè)分區(qū)上創(chuàng)建的索引。
未指定 GLOBAL 關(guān)鍵字創(chuàng)建的索引即為局部索引。局部索引暫時(shí)不支持分區(qū)。創(chuàng)建局部索時(shí),會(huì)在水平分區(qū)表的主表上創(chuàng)建局部索引和在每個(gè)子表上創(chuàng)建一個(gè)子表局部索引。索引數(shù)據(jù)存儲(chǔ)在子表局部索引上。
創(chuàng)建局部索引
必須缺省 GLOBAL 關(guān)鍵字
create index idx1 on dept_part(name)
storage(on TS_HR_IDX);
在 WHERE 中指定索引列,可使用索引 idx1 查詢
explain select * from t1 where name = 'dd';
直接對(duì)分區(qū)子表查詢,則使用子表局部索引
explain select * from DEPT_PART partition (p2022) where name = 'dd';
創(chuàng)建聚集索引
create cluster index clu_emp_name on emp(ename);
若指定索引鍵,表中數(shù)據(jù)都會(huì)根據(jù)指定索引鍵排序。
建表后,DM8 也可以用創(chuàng)建新聚集索引的方式來(lái)重建表數(shù)據(jù),并按新的聚集索引排序。
新建聚集索引會(huì)重建這個(gè)表以及其所有索引,代價(jià)非常大的操作。
創(chuàng)建唯一索引
create unique index dept_unique_index on dept(dname);
位圖索引:
針對(duì)含有大量相同值的列而創(chuàng)建。
索引查詢
SELECT CONSTRAINT_NAME,INDEX_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_NAME= 'CONS134218800';
SELECT CONSTRAINT_NAME,INDEX_NAME,TABLE_NAME FROM ALL_CONSTRAINTS WHERE CONSTRAINT_TYPE='P' and TABLE_NAME='EMP2';
SELECT INDEX_NAME,UNIQUENESS FROM ALL_INDEXES WHERE INDEX_NAME='INDEX33555495';
重建索引
當(dāng)一個(gè)表經(jīng)過(guò)大量的增刪改操作后,表的數(shù)據(jù)在物理文件中可能存在大量碎片,從而影響訪問(wèn)速度。
sp_rebuild_index(schema_name varchar(256),index_id int);
select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';
sp_rebuild_index('SYSDBA',33555482);
刪除索引
DROP INDEX IF EXISTS emp_ename;
不能直接刪除與已啟用的 UNIQUE KEY 鍵或 PRIMARY KEY 鍵約束相關(guān)的索引。要?jiǎng)h除一個(gè)與約束相關(guān)的索引,必須停用或刪除該約束本身。
ALTER TABLE emp DROP CONSTRAINT pk_emp_name;
刪除 emp 表的聚集索引
DROP INDEX clu_emp_name;
刪除表就自動(dòng)刪除了所有與其相關(guān)的索引。
查看索引信息
INDEXDEF(INDEX_ID int, PREFLAG int); --PREFLAG 表示返回信息中是否增加模式名前綴。
select name,id,subtype$ from sysobjects where subtype$='INDEX' and name='EMP_IDX';
SELECT INDEXDEF(33555482,0);文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-555372.html
select * from SYSINDEXES where id=33555482;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-555372.html
到了這里,關(guān)于達(dá)夢(mèng)sql執(zhí)行計(jì)劃、HINT、索引簡(jiǎn)單應(yīng)用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!