узнать правильный (наиболее эффективный) способ построения SQL :
UPDATE a
SET Country=b.Country
FROM @TableName a
INNER JOIN YourCountryCapitalTable b ON a.Capital=b.Capital
вы не можете кодировать SQL как прикладную программу, вам нужно использовать логику установки, а НЕ логику для каждой строки. Когда вы добавляете несколько функций в оператор SQL, их , скорее всего, нужно будет запускать для каждой строки, что замедляет ваши запросы (если они не являются табличными функциями в предложении FROM). Если просто включить функцию в запрос, вы можете , скорее всего, увидеть значительное улучшение производительности из-за использования индекса и операций, выполняемых по полной, а не по строке в строке.
грустно иметь очень sql-код, который не элегантен и часто повторяется повсюду. тем не менее, ваша главная цель - быстрый поиск данных (использование индекса и операции над множествами), а не какой-нибудь изящный конкурс красоты кодирования.
I have found other way to do this.
yuck yuck yuck, звучит как будущий вопрос здесь, на SO, когда следующий человек должен будет поддерживать этот код. Вам не нужен индекс для использования WHILE
. Если в вашей временной таблице столько строк, что вам нужен индекс, то WHILE
- это то, что LAST , что вам следует делать!