#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 |
У меня около 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. Вы запрашиваете учебное пособие по базам данных