子句中包含的SQL索引



我们的应用程序在其中一个env中突然变慢了。我所做的唯一更改就是更改了SQL。在发布之前,SQL类似于

Select EmployeeId 
From Employee 
Where Dept='CS' 
  and record_state='ACTIVE' 
  and EmployeeTypeId ='1' 

发布后SQL是

Select EmployeeId 
From Employee Where Dept='CS' 
 and record_state='ACTIVE' 
 and EmployeeTypeId IN ('1','2')

此表上的索引为employee_state_id_index(部门,记录状态,EmployeeTypeId)索引尚未更改。这个索引对新SQL没有帮助吗?新的SQL会扫描整个表吗?我不知道索引在子句中是如何工作的。感谢您的帮助和意见

查询的解释计划是

| Id  | Operation         | Name                     | Rows  | Bytes | Cost (%CPU)|
|   0 | DELETE STATEMENT  |                          |     1 |    57 |     4   (0)|
|   1 |  DELETE           | Employee                 |       |       |            |
|*  2 |   INDEX RANGE SCAN| employee_state_id_index  |     1 |    57 |     4   (0)|
--------------------------------------------------------------------------------
Predicate Information (identified by operation id):

PLAN_TABLE_OUTPUT

   2 - access("C"."Dept"='CS' AND
              "C"."RECORD_STATE"='ACTIVE')
       filter("C"."EmployeeTypeId"='1' OR
              "C"."EmployeeTypeId"='2')

我们面临的问题的解决方案是重新索引表。该表有1000万条记录,我们最近清理了表中的数据(当我们意识到我们有重复的记录时),这将其减少到几乎是以前记录数量的一半。因此,我们认为我们将尝试重新索引,因为无论如何它都需要它。这有助于:)

相关内容

  • 没有找到相关文章

最新更新