Ich versuche, einen Index für die folgende Ansicht zu erstellen:
SELECT 'Candidate' AS Source, CandidateID AS SourceId, LastName + ', ' + FirstName AS SourceName
FROM dbo.Candidates
UNION
SELECT 'Resource' AS Source, ResourceID AS SourceId, LastName + ', ' + FirstName AS SourceName
FROM dbo.Resources
UNION
SELECT 'Deal' AS Source, DealID AS SourceId, CONVERT(varchar, Number) + '-' + CONVERT(varchar, RevisionNumber) AS SourceName
FROM dbo.Deals
UNION
SELECT 'Job Order' AS Source, JobOrderID AS SourceId, CustomerNumber AS SourceName
FROM dbo.JobOrders
Ich erhalte den folgenden Fehler:
Msg 1939, Level 16, State 1, Line 2
Cannot create index on view '_Source' because the view is not schema bound.
Ich habe WITH SCHEMABINDING zu CREATE hinzugefügt und erhalte nun den folgenden Fehler:
Msg 10116, Level 16, State 1, Line 2
Cannot create index on view 'DEALMAKER.dbo._Source' because it contains one or more UNION, INTERSECT, or EXCEPT operators. Consider creating a separate indexed view for each query that is an input to the UNION, INTERSECT, or EXCEPT operators of the original view.
Meine Fragen sind:
Wie würde ich einen Index für diese Ansicht erstellen? Würde das Erstellen separater indizierter Ansichten vraiment arbeiten?
Und schließlich: Bin ich vraiment eine Leistungsverbesserung bei allen Abfragen, die mit dieser Ansicht verknüpft sind, feststellen?
Vielen Dank im Voraus!
1 Stimmen
Die Frage, ob Sie eine Leistungsverbesserung feststellen werden, hängt ganz davon ab, wie Sie diese Ansicht verwenden. Ich kann nichts vorhersagen, ohne zu sehen, wie Sie sie nutzen - tut mir leid - darauf gibt es keine einfache Antwort.