通过分析SQL脚本教你如何创建索引《原创》

例如以下的SQL

select  distinct 
EXIST_DOC_ATTACH
 FROM ( 

SELECT   B.EXIST_DOC_ATTACH
FROM EIIS_EPMS_APPROVAL_ROUTING_TAB A, EIIS_EPMS_DOC_QUICK_TAB B
 WHERE A.LU_NAME = 'DocIssue'
   AND A.KEY_REF = B.Key_Ref AND A.Contract=B.Contract and B.objstate = 'Released'
   AND  exists(SELECT  C.group_id FROM EIIS_EPMS_DOC_QUICK_GRP_TAB C WHERE C.USER_ID='YAO_RENHAI' and C.Contract=A.Contract and  C.group_id= A.group_id)
   
 ) T
 LEFT JOIN (select PERSON_ID as PerId,NAME,Contract from eiis_epms_person_info_tab) C on C.PerId=T.Person_Id and T.DOC_AREA=C.Contract
 LEFT JOIN (select Group_Id as GroId,GROUP_DESCRIPTION,Contract from eiis_epms_document_group_tab) D on D.GroId=T.Group_Id  and T.DOC_AREA=D.Contract
 ORDER BY DT_CRE DESC

 

创建索引时要注意:

1、WHERE 条件后面的条件要单独创建联合索引,但不包含exists,子查询条件

      以上面SQL为例要在EIIS_EPMS_APPROVAL_ROUTING_TAB 表上如下索引:

      index1    包含字段LU_NAME    KEY_REF Contract

2、对exist中用到的字段要单位创建索引

    以上面SQL为例要在EIIS_EPMS_APPROVAL_ROUTING_TAB 表上如下索引:

      index2    包含字段Contract    group_id

3、left join 中使用到的字段要单独创建索引

以上面SQL为例要在EIIS_EPMS_APPROVAL_ROUTING_TAB 表上如下索引:

      index3    包含字段Contract    Person_Id

4、使用order by的字段要单独创建索引

       index4   包含字段DT_CRE

参考以上方法可以为其他表创建索引。

通过以上方法创建索引可以加快查询速度。

你可能感兴趣的:(通过分析SQL脚本教你如何创建索引《原创》)