SELECT ID
FROM Specimen_admin_specimen_T
WHERE (Species_ID IN
(SELECT DISTINCT (Species_ID)
FROM View_All_Tree
WHERE genus_ID = '{F689E231-0DF5<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />-40C1-A11D-0B4DD3B8187A}')) OR
(SubSpecies_ID IN
(SELECT DISTINCT (SubSpecies_ID)
FROM View_All_Tree
WHERE genus_ID = '{F689E231-0DF5-40C1-A11D-0B4DD3B8187A}'))
表 'Table_genus'。扫描计数 4,逻辑读 8 次,物理读 0 次,预读 0 次。
表 'Table_species'。扫描计数 6238,逻辑读 12476 次,物理读 0 次,预读 0 次。
表 'Table_subspecies'。扫描计数 14,逻辑读 156 次,物理读 0 次,预读 0 次。
表 'Specimen_admin_specimen_T'。扫描计数 1,逻辑读 84381 次,物理读 0 次,预读 0 次。
-----------------VS----------------
SELECT ID
FROM Specimen_admin_specimen_T
WHERE EXISTS
(SELECT Species_ID
FROM view_All_Tree
WHERE genus_ID = '{FDA6F11C-AC83-44FF-B6E9-345024907C73}' AND
Species_ID = specimen_admin_specimen_T.Species_ID)
UNION
SELECT ID
FROM Specimen_admin_specimen_T
WHERE EXISTS
(SELECT Species_ID
FROM view_All_Tree
WHERE genus_ID = '{FDA6F11C-AC83-44FF-B6E9-345024907C73}' AND
subSpecies_ID = specimen_admin_specimen_T.subSpecies_ID)
表 'Specimen_admin_specimen_T'。扫描计数 4,逻辑读 86665 次,物理读 0 次,预读 0 次。
表 'Table_subspecies'。扫描计数 1,逻辑读 34 次,物理读 0 次,预读 0 次。
表 'Table_species'。扫描计数 2,逻辑读 4 次,物理读 0 次,预读 0 次。
表 'Table_genus'。扫描计数 2,逻辑读 4 次,物理读 0 次,预读 0 次。
----------------------
尽管'Specimen_admin_specimen_T'用到了索引,而且'Table_species'表的扫描次数大为减少并利用了索引,但是第二种方法的'Specimen_admin_specimen_T'表扫描的四次,而第一种方法只扫描了一次,不知道这里面的问题出在哪里,还望大家指正。