Member 12613458 Ответов: 2

Подстрока в предложении where съедает процессорное время


Часть SQL stmt, где функция подстроки в предложении where съедает процессорное время.

Могу ли я переставить приведенный ниже запрос в любую другую форму?

ВЫБЕРИТЕ ELIG_TYP ИЗ ТАБЛИЦЫ 1
ГДЕ COMPANY_CD В
(Выберите SUBSTR(CMPNYID, 1, 4) из таблицы 2, где USR = 'Badshah')

Пожалуйста Ответьте

Что я уже пробовал:

Выберите ELIG_TYP из table1 где COMPANY_CD в (выберите функцию substr(CMPNYID, 1, 4) из table2, где УСР = 'Бадшах')

Member 12613458

База данных DB2

2 Ответов

Рейтинг:
6

Santosh kumar Pithani

ВЫБИРАТЬ
t1.ELIG_TYP
ОТ
ТАБЛИЦА1 Т1
внутреннее соединение
ТАБЛИЦА2 Т2 по(Т1.COMPANY_CD=левый(Т2.CMPNYID,4)), где Т2.УСР ='Бадшах';


Member 12613458

Нет никакой разницы между left и substring, потому что left переводится в substring в плане выполнения.

Santosh kumar Pithani

Хорошо, но план выполнения sql-кода выполняется быстро при использовании соединений, поэтому функция left не влияет на производительность процессора.

Рейтинг:
1

Magic Wonder

Привет,

Проверьте эти шаги...если данные в ваших таблицах огромны.

1. 1-й извлеките свои данные из таблицы 2 с необходимыми условиями WHERE в таблице temp.
2. Сделайте желаемый запрос Select с этой временной таблицей, используя подстроку.


При необходимости я могу опубликовать запрос в SQL server.


Овации