Оптимизированная замена подстроки в строке с помощью регулярных выражений в MS SQL Server

0. 106 31.07.17 00:54 Сейчас в теме
В MS SQL Server отсутствуют регулярные выражения. Как включить их использование? Замена подстроки в строке выполняется долго. Как сократить время выполнения замены? Для выявления тяжелых запросов часто используют данные трассировки. Чтобы получить суммированные данные, необходимо сгруппировать одинаковые запросы, а из-за разных имен временных таблиц они не группируются. Статья - пример замены имен временных таблиц в результатах трассировки.

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 2292 01.08.17 20:42 Сейчас в теме
2. info1i 106 23.09.17 20:56 Сейчас в теме
Сделал регулярное выражение универсальнее, оптимизировав тем самым замену:
upd ate tr1 set TextData = ext.Regex_Replace(TextData, '#tt[0-9]+ ', 'TempTable ', '')

И вариант с заменой параметров, лишних "exec...":
update tr1 se t TextData =
ext.Regex_Replace(
	ext.Regex_Replace(
		ext.Regex_Replace(
			ext.Regex_Replace(TextData, 'exec sp_executesql N''', '', '')
			,'#tt[0-9]+ ','TempTable ', '')
		,' [0-9]+x[0-9]+ ',' @p ', '')
	,' [0-9]+x[0-9]+[A-F]+ ',' @p ', '')
3. МихаилМ 23.09.17 21:55 Сейчас в теме
автор молодец. но эта задача в выигрыше 10 секунд. не так интересна.
тк 1с разбивает запросы на части сохраняя промежуточные значения в временные таблицы.
и задача объединить эти запросы для выявления часто повторяющихся запросов значительно более ресурсоёмкая.
4. МихаилМ 23.09.17 22:26 Сейчас в теме
+(3)
но если номализованным текстам запросов сопоставить хэш - то задача объединения тестов сильно упростится.
Оставьте свое сообщение
Вопросы с вознаграждением