Я пытаюсь найти некоторую информацию вокруг оптимизации запросов данной как и = операторов в ИНЕКЕ моего поиска Redshift. Пример запрос ниже:RedShift «Like» или «=» Оператор Предпочтение
Select Event, substring(regexp_substr(message, 'Segment=[A-Za-z0-9]*', 1), 9) as
Segment,
messagetime
from Logs
where message like '%JobType=ProcessVideoSegmentIntoFragmentsJob%'
and (Status='Ingested' OR Status='Started')
and message like '%.ts%'
and messagetime >= DATEADD(DAY, -30, GETDATE())
Что касается Где положения, мне любопытно, в каком порядке сравнение будет сделано, в частности, Status = и сообщений как. Поскольку подобный оператор в этом случае намного менее эффективен, я надеюсь, что он сравнивался послеСтатус =. Я сделал EXPLAIN на запрос, который размещен ниже:
XN Seq Scan on logs (cost=0.00..48973188.14 rows=1 width=692)
Filter: (((message)::text ~~
'%JobType=ProcessVideoSegmentIntoFragmentsJob%'::text) AND (((status)::text =
'Ingested'::text) OR ((status)::text = 'Started'::text)) AND (messagetime >=
'2015-09-26 16:19:56'::timestamp without time zone) AND ((message)::text ~~
'%.ts%'::text))
Насколько я могу сказать, так как не используются без индексов, то запрос будет просто выполнить на то, что он думает, что будет наиболее производительным, но если это порядок, в котором он выполняется, это, безусловно, не лучший план запроса.
В конце концов мне просто нужно знать, будет ли Redshift запустить как или = оператор первым.