Попытка достичь функции VLOOKUP в Excel в SQL

#sql #sql-server #excel #vlookup #sql-scripts

#sql #sql-сервер #excel #vlookup #sql-скрипты

Вопрос:

Я пытаюсь реализовать функцию VLOOKUP на моем SQL server, запустив SQL-скрипт.

Для небольшого примера мои таблицы выглядят так:

Таблица

ID Тип и много других столбцов
123 A xx
321 B гг
213 C zz

TableB

Число Тип и много других столбцов..
321 C dd
213 A ee
123 B rr

Я пытаюсь просмотреть столбец идентификатора таблицы A в столбце номера таблицы B и обновить значение столбца типа таблицы A из значения столбца таблицы B. Результатом будет:

Таблица A

ID Тип и много других столбцов..
123 B tt
321 C pp
213 A qq

У меня около 100 000 строк в таблице A и 2000 строк в таблице B. Если я использую VLOOKUP в Excel, весь процесс займет около 1 минуты.

Я пытаюсь достичь той же цели и эффективности результатов в SQL Server с помощью сценариев SQL. Вот мой сценарий SQL выглядит так:

 SET A.[Type]=B.[Type]
FROM TableA A
LEFT JOIN TableB B
ON A.[ID]=B.[Number]
 

Весь процесс дал правильный результат, но для запуска скриптов потребовалось 46 минут. Могу ли я спросить, что-то не так со сценарием SQL? или почему потребовалось так много времени для SQL Server с SQL script по сравнению с VLOOKUP? Или есть какой-нибудь способ повысить эффективность моего SQL-скрипта?

Большое вам спасибо!

Комментарии:

1. В обоих случаях производительность ужасна. Вы не опубликовали спецификации таблицы, но если это займет 46 минут, очевидно, что идентификатор и номер не индексируются. VLOOKUP намного медленнее, чем SQL-запрос с правильной индексацией

2. Звучит как нехватка индексов и / или сервер с очень плохими ресурсами. Публикация плана запроса (используйте Вставить план) поможет нам помочь вам.

3. @PanagiotisKanavos Привет, спасибо за ответ. можете ли вы уточнить, как я могу использовать индексацию для повышения скорости? Спасибо!

4. Вы запрашиваете учебное пособие по базам данных