Coalesce icon indicating copy to clipboard operation
Coalesce copied to clipboard

Search within collections generate separate subqueries for each field, rather than merging all searches within the collection together.

Open ascott18 opened this issue 1 year ago • 0 comments

Actual:

SELECT COUNT(*)
FROM [UploadedFiles] AS [u]
WHERE (LOWER([u].[OriginalPath]) LIKE @__Value_1_contains ESCAPE N'\' OR EXISTS (
    SELECT 1
    FROM [ProcessingEvents] AS [p]
    LEFT JOIN [Foos] AS [r] ON [p].[FooId] = [r].[Id]
    WHERE [u].[Id] = [p].[ProcessedFileId] AND [r].[Name] IS NOT NULL AND LOWER([r].[Name]) LIKE @__Value_2_contains ESCAPE N'\') OR EXISTS (
    SELECT 1
    FROM [ProcessingEvents] AS [p0]
    LEFT JOIN [Foos] AS [r0] ON [p0].[FooId] = [r0].[Id]
    WHERE [u].[Id] = [p0].[ProcessedFileId] AND [r0].[Code] IS NOT NULL AND LOWER([r0].[Code]) LIKE @__Value_3_contains ESCAPE N'\') OR EXISTS (
    SELECT 1
    FROM [ProcessingEvents] AS [p1]
    LEFT JOIN [Foos] AS [r1] ON [p1].[FooId] = [r1].[Id]
    WHERE [u].[Id] = [p1].[ProcessedFileId] AND [r1].[Description] IS NOT NULL AND LOWER([r1].[Description]) LIKE @__Value_4_contains ESCAPE N'\'))

Desired:

SELECT COUNT(*)
FROM [UploadedFiles] AS [u]
WHERE (LOWER([u].[OriginalPath]) LIKE @__Value_1_contains ESCAPE N'\' OR EXISTS (
    SELECT 1
    FROM [ProcessingEvents] AS [p]
    LEFT JOIN [Foos] AS [r] ON [p].[FooId] = [r].[Id]
    WHERE [u].[Id] = [p].[ProcessedFileId] AND (
	([r].[Name] IS NOT NULL AND LOWER([r].[Name]) LIKE @__Value_2_contains ESCAPE N'\') OR
	([r].[Code] IS NOT NULL AND LOWER([r].[Code]) LIKE @__Value_2_contains ESCAPE N'\') OR
	([r].[Description] IS NOT NULL AND LOWER([r].[Description]) LIKE @__Value_2_contains ESCAPE N'\')
	))

ascott18 avatar Oct 02 '24 16:10 ascott18