I have some issues with the performance of a sql statement.The statement below runs in about two seconds however I must include a column a don't need SELECT DISTINCT L.LOOKUP, L.LOOKUPIDX, U.UNMATCHEDIDX FROM LOOKUPS L INNER JOIN UNMATCHED U ON L.LOOKUPIDX=U.LOOKUPIDX INNER JOIN UNMATCHEDITEM UITM ON U.UNMATCHEDIDX=UITM.UNMATCHEDIDX INNER JOIN UNMATCHEDITEMS UITMS ON UITM.UNMATCHEDITEMIDX=UITMS.UNMATCHEDITEMIDX
I don't really need unmatchedidx. What I really need is a distinct list of lookup and lookupidx. However if i exclude unmatchedidx from the distinct it takes 46 seconds SELECT DISTINCT L.LOOKUP, L.LOOKUPIDX--, U.UNMATCHEDIDX FROM LOOKUPS L INNER JOIN UNMATCHED U ON L.LOOKUPIDX=U.LOOKUPIDX INNER JOIN UNMATCHEDITEM UITM ON U.UNMATCHEDIDX=UITM.UNMATCHEDIDX INNER JOIN UNMATCHEDITEMS UITMS ON UITM.UNMATCHEDITEMIDX=UITMS.UNMATCHEDITEMIDX
In order to get what I need with the performance I need the best I can come up with is below SELECT LKU.LOOKUP, LKU.LOOKUPIDX FROM LOOKUPS LKU INNER JOIN ( SELECT DISTINCT L.LOOKUP, L.LOOKUPIDX, U.UNMATCHEDIDX FROM LOOKUPS L INNER JOIN UNMATCHED U ON L.LOOKUPIDX=U.LOOKUPIDX INNER JOIN UNMATCHEDITEM UITM ON U.UNMATCHEDIDX=UITM.UNMATCHEDIDX INNER JOIN UNMATCHEDITEMS UITMS ON UITM.UNMATCHEDITEMIDX=UITMS.UNMATCHEDITEMIDX ) AS A ON LKU.LOOKUPIDX = A.LOOKUPIDX
The above works but it seem way more obtuse than it needs to be. I can imagine someone looking at this a year from now and being totally perplexed as to why something so simple is written in such a wayGeneral info Lookup - (PK: LookupIDX) (Count: 19)Unmatched - (PK: UnmatchedIDX) (Count: 7)UnmatchedItem - (PK: UnmatchedItemIDX) (Count: 15,277)UnmatchedItems - (PK: UnmtachedItemsIDX) (Count: 257,455)Any suggestions will be appreciated