Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 оптимизация  [new]
al322se
Member

Откуда:
Сообщений: 3
Здравствуйте. У меня есть бд, в которой один из столбцов строкового типа(если не ошибаюсь varchar), в этом столбце хранятся строки всего где-то 5 "видов". Вопрос: каким образом можно оптимизировать работу, чтобы при запросе не сравнивалась вся строка, а только "вид".
20 ноя 11, 13:50    [11627139]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
al322se
Здравствуйте. У меня есть бд, в которой один из столбцов строкового типа(если не ошибаюсь varchar), в этом столбце хранятся строки всего где-то 5 "видов". Вопрос: каким образом можно оптимизировать работу, чтобы при запросе не сравнивалась вся строка, а только "вид".

создать справочник с 5ю строками, а в соновной таблице лишь идентификатор нужной строки из справочника
20 ноя 11, 14:13    [11627190]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
al322se
Member

Откуда:
Сообщений: 3
Спасибо большое) А вы не могли бы скинуть ссылку, где про это можно почитать(смотрел в msdn, там по слову справочник не то выводит (( )
20 ноя 11, 14:19    [11627210]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
al322se
Спасибо большое) А вы не могли бы скинуть ссылку, где про это можно почитать(смотрел в msdn, там по слову справочник не то выводит (( )

справочник - это ещё одна таблица
20 ноя 11, 15:58    [11627498]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8880
Третья нормальная форма (3NF) - тут, WiKi
20 ноя 11, 17:30    [11627717]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
ChA
Member

Откуда: Москва
Сообщений: 11319
SIMPLicity_
Третья нормальная форма (3NF)
Это совсем из другой оперы. Вынос поля в отдельный справочник не имеет никакого отношения к приведению таблицы к 3НФ. От того, что поле одного типа поменяли на поле другого типа "нормальность" таблицы никак не меняется. Это всего лишь один из трюков, предназначенный для решения конкретных практических задач.
20 ноя 11, 22:43    [11628779]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
AndreTM
Member

Откуда: Где-то в вологодских лесах...
Сообщений: 6900
ChA,
Конечно, это "трюк", но и нормализация БД состоит именно в этом.
Другое дело, что (и я согласен) - на момент "этого выноса" база никоим краем не стала "третьей нормальной формой"... - мы этого не увидели.
21 ноя 11, 03:18    [11629220]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
ChA
Member

Откуда: Москва
Сообщений: 11319
AndreTM
Конечно, это "трюк", но и нормализация БД состоит именно в этом.
В чём "в этом" ? В замене поля одного типа на поле другого типа ?
21 ноя 11, 11:51    [11630327]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
SIMPLicity_
Третья нормальная форма (3NF) - тут, WiKi
Пример из вики можно изменить:

Измённый пример из http://ru.wikipedia.org/wiki/Третья_нормальная_форма
В результате приведения к 3НФ получаются две таблицы:
ОтделТелефон
Бухгалтерия11-22-33
Снабжение44-55-66

ФамилияОтдел
ГришинБухгалтерия
ВасильевБухгалтерия
ПетровСнабжение
От изменения типа идентификаторов пример не превратится из 3НФ в 2НФ
21 ноя 11, 12:16    [11630594]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8880
ChA
AndreTM
Конечно, это "трюк", но и нормализация БД состоит именно в этом.
В чём "в этом" ? В замене поля одного типа на поле другого типа ?
В снижении встречаемости идентичных данных до разумного предела. Поэтому часть форм практически не используется в жизни (кажется, четвёртая и пятая - никогда). Тут могу ошибаться - теорию мне читали лет пятнадчать - двадцать тому назад...

А змена строковой переменной на число просто снижает время обработки запросов (ибо сравнить 1 и 2 для компа быстрее нежели "Папа у Васи силён в математике. Суперски. " и "Папа у Васи силён в математике. Учится папа за Васю весь год. Во везуха.").

PS Холивар насчёт хэшей, контрольных сумм любого вида и т.п. просьба не разводить - во-первых, их тоже надо считать, во-вторых суть вопроса не в этом. Хотя, заменить идентификатор хэшем можно, но не нужно - нет гарантии что не появятся две разные строки с одинаковыми хешэм.

ИМБО.
21 ноя 11, 12:42    [11630880]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31990
SIMPLicity_
В снижении встречаемости идентичных данных до разумного предела. Поэтому часть форм практически не используется в жизни (кажется, четвёртая и пятая - никогда). Тут могу ошибаться - теорию мне читали лет пятнадчать - двадцать тому назад...
Так вы прочитайте ссылку, которую сами дали, там всё просто.

Конечно, никакой "встречаемости идентичных данных до разумного предела" в определении третьей нормальной формы нет :-)

Соответственно, для решения вопроса ТС
al322se
Вопрос: каким образом можно оптимизировать работу, чтобы при запросе не сравнивалась вся строка, а только "вид".
приведение к 3НФ неприменимо, т.к. ни о каких атрибутах, зависимых от этих "строк", речи не идёт.

Ну а по самому вопросу ответ зависит от деталей системы.

Ведь взамен уменьшения места хранения мы (возможно) получаем лишний джойн...

Поэтому принимать решение нужно, исходя из размера этих строк и из того, нужна ли будет эта строка при выборках или достаточно будет числового идентификатора.
21 ноя 11, 13:07    [11631216]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
ChA
Member

Откуда: Москва
Сообщений: 11319
SIMPLicity_
ChA
В чём "в этом" ? В замене поля одного типа на поле другого типа ?
В снижении встречаемости идентичных данных до разумного предела.
Это какое-то новое определение нормализации. Раскроете, что оно значит ?
SIMPLicity_
Поэтому часть форм практически не используется в жизни (кажется, четвёртая и пятая - никогда).
Картинка с другого сайта. Сильное утверждение. Вы хоть помните, в чём они состоят ? И какое они вообще имеют отношение к обсуждаемому случаю ?
SIMPLicity_
Тут могу ошибаться - теорию мне читали лет пятнадчать - двадцать тому назад...
Так может пора освежить свои знания ?
SIMPLicity_
А змена строковой переменной на число просто снижает время обработки запросов (ибо сравнить 1 и 2 для компа быстрее нежели "Папа у Васи силён в математике. Суперски. " и "Папа у Васи силён в математике. Учится папа за Васю весь год. Во везуха.").
И какое отношение это имеет к нормализации ?
SIMPLicity_
PS Холивар насчёт хэшей, контрольных сумм любого вида и т.п. просьба не разводить - во-первых, их тоже надо считать, во-вторых суть вопроса не в этом. Хотя, заменить идентификатор хэшем можно, но не нужно - нет гарантии что не появятся две разные строки с одинаковыми хешэм.
А это-то к чему ? К тому же, что и 3НФ к обсуждаемому примеру ?
21 ноя 11, 13:10    [11631240]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
Konst_One
Member

Откуда:
Сообщений: 11625
может ТСу просто нужен индекс по этому полю?
21 ноя 11, 13:10    [11631248]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Ну тогда можно попытаться нятуть Доменно-ключевую нормальную форму.

А 3-тью отмазать так:
1. Делим строку на несколько (колонок)
2. На основе какой-то колонки (символа) приводим к 3-НФ
3. Заменяем Char(1) -> TinyInt
4. PROFIT

ФамилияОтдел(1)Отдел(2)
ГришинБухгалтерия
ВасильевБухгалтерия
ПетровСнабжение
21 ноя 11, 13:52    [11631730]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8880
Alex, Cha,
ок,- как-нить освежу знания... Вики прочёл (точнее - даже пробежался глазами) по диагонали. Ну а коли обосрался - извините . Спасиб, что мордой потыкали..
PS Ну, значит, так в голове такое представление сложилось.. Бывает. Как-нить гляну... Граббера что ли перечитать...
21 ноя 11, 14:02    [11631797]     Ответить | Цитировать Сообщить модератору
 Re: оптимизация  [new]
al322se
Member

Откуда:
Сообщений: 3
Извините я не совсем понял причем здесь 3 нф.Насчет еще одной таблицы: мне кажется это еще больше замедлит запрос из за присоединения, да и получается все равно субд все равно будет просматривать строку , только теперь из другой таблицы(возможно я не прав).Здесь писали про индексы,я склоняюсь к тому что надо рыть именно в этом направлении. Но пока то из того, что про них читал, только Полнотекстовый индекс это что -то похожее, но я никак не могу понять как его можно приделать к моему случаю, кто -нибудь может в кратце прояснить ситуацию про индексы?
21 ноя 11, 15:35    [11632616]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить