Ho una semplice query che si basa su due tavoli full-text indicizzate, ma funziona estremamente lento quando ho il CONTIENE in combinazione con tutte le ulteriori O ricerca. Come si vede nel piano di esecuzione, le due ricerche a testo integrale schiacciono le prestazioni. Se interrogo solo 1 dei CONTAINS, o nessuno dei due, la query è inferiore al secondo, ma nel momento in cui aggiungi O nel mix, la query diventa sfortunata.O ricerche con CONTIENE Brings Query per Crawl
I due tavoli non sono niente di speciale, non sono eccessivamente larghi (42 col in uno, 21 nell'altro, forse 10 colli sono indicizzati FT in ognuno) o contengono anche molti record (36k recs nel più grande di il due).
sono stato in grado di risolvere le prestazioni suddividendo i due CONTIENE ricerche nella propria SELEZIONA query e quindi UNION i tre insieme. Questa soluzione UNION è la mia unica speranza?
Grazie.
SELECT a.CollectionID
FROM collections a
INNER JOIN determinations b ON a.CollectionID = b.CollectionID
WHERE a.CollrTeam_Text LIKE '%fa%'
OR CONTAINS(a.*, '"*fa*"')
OR CONTAINS(b.*, '"*fa*"')
del piano di esecuzione (che ho bisogno di più la reputazione prima di poter postare l'immagine): http://yfrog.com/7dslowcontainsj http://desmond.yfrog.com/Himg265/scaled.php?tn=0&server=265&filename=slowcontains.jpg&xsize=640&ysize=640
Vorrei sottolineare @ChiragRoy afferma che si tratta di un problema noto con SQL2008/R2 con un caso PSS aperto. Ma sono curioso che qualcun altro si sia imbattuto nel problema e abbia trovato una soluzione alternativa o un motivo per il problema. – scolja
Non sono abbastanza sicuro di cosa sia il protocollo per contrassegnare una singola risposta come risposta. In questo caso, UNION risolve definitivamente il problema, ma sembrerebbe che io possa risolvere il problema e ottenere prestazioni migliori con CONTAINSTABLE. Apprezzo molto il feedback di tutti sulla domanda. – scolja