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

Откуда:
Сообщений: 13
Добрый день!

MS SQL 2005. Есть таблица с 70 полями: ID, Param1, Param2, Param3....Param69.

Фактический поиск и основная обработка (фильтрация, сортировка) выполняется по первым 5 полям. Остальные используются намного реже (соотношение где-то 1 к 100). Имеет ли смысл разделить таблицу на две? В первой будут только те 5 полей по которым ведется основная работа, во второй с точно таким же первичным полем будут остальные поля (отношение 1 к 1). Ускорит/упростит ли это работу?

Заранее благодарен за комментарии!
7 июл 11, 14:12    [10938961]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
Если ты действительно уверен в том, что остальные поля используются редко, то это нормальная практика.
7 июл 11, 14:17    [10939019]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
начинающий sql-гуру
Если ты действительно уверен в том, что остальные поля используются редко, то это нормальная практика.

Нука - нука , чем же это лучше ? Лучше пруф линк , чем ваши разглагольствования.
7 июл 11, 14:32    [10939181]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Ken@t
Нука - нука , чем же это лучше ? Лучше пруф линк , чем ваши разглагольствования.


Если вспомнить, что сервер оперирует страницами, то такое разбиение сможет помочь сэкономить на операциях ввода-вывода и буферном кэше.
7 июл 11, 14:59    [10939432]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Glory
Member

Откуда:
Сообщений: 104751
drserg
Фактический поиск и основная обработка (фильтрация, сортировка) выполняется по первым 5 полям.

Всегда по всем первым 5ти ? Или по любой комбинации из первых 5ти ?
7 июл 11, 15:01    [10939453]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Ivan Durak
Member

Откуда: Minsk!!!
Сообщений: 3752
drserg
Добрый день!

MS SQL 2005. Есть таблица с 70 полями: ID, Param1, Param2, Param3....Param69.

Фактический поиск и основная обработка (фильтрация, сортировка) выполняется по первым 5 полям. Остальные используются намного реже (соотношение где-то 1 к 100). Имеет ли смысл разделить таблицу на две? В первой будут только те 5 полей по которым ведется основная работа, во второй с точно таким же первичным полем будут остальные поля (отношение 1 к 1). Ускорит/упростит ли это работу?

Заранее благодарен за комментарии!

можешь индексами покрыть первые пять полей
7 июл 11, 15:06    [10939495]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
drserg
Member

Откуда:
Сообщений: 13
Glory
drserg
Фактический поиск и основная обработка (фильтрация, сортировка) выполняется по первым 5 полям.

Всегда по всем первым 5ти ? Или по любой комбинации из первых 5ти ?

По комбинации. Бывает ищут только по одному полю, бывает по 2-3, а бывает что по всем пяти.
7 июл 11, 15:17    [10939630]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
Ну если думать логично - если разделить таблицу, то в одном page будут только эти 5 полей и для обработки будет использовано меньше страниц, возможно это будет быстрее. Но если возвращаюся поля не из этих 5-ти, то потребуется join между таблицами, что возможно будет дороже?
7 июл 11, 15:38    [10939783]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Ken@t
Member

Откуда: 大地
Сообщений: 3265
pkarklin
Ken@t
Нука - нука , чем же это лучше ? Лучше пруф линк , чем ваши разглагольствования.


Если вспомнить, что сервер оперирует страницами, то такое разбиение сможет помочь сэкономить на операциях ввода-вывода и буферном кэше.

ну да, ну да , давайте вспомним ограничение на количество полей и магическую *.
Типы данных забыли и по мелочи индексы и констрэйны на обоих таблицах .

начинающий sql-гуру

Нормальная практика здесь отдыхает, а включется мозг и комплексная оценка.
7 июл 11, 16:32    [10940240]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
Ken@t
ну да, ну да , давайте вспомним ограничение на количество полей и магическую *.


А причем тут это, если для поднятия 10 000 записей из 5ти полей понадобиться гараздо меньше операций IO и буферного кэша чем при широкой таблице и выьорке только этих пяти полей.

Сообщение было отредактировано: 7 июл 11, 18:05
7 июл 11, 18:04    [10941004]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
А что бы не взять, и не потестить?
Добить в левой базе табличку до 5000% строк от текущей, разделить, и прогнать по ней самый пессимистичный запрос (из оптимистичных).

Если будет хотя-бы 50 на 50, то таки есть смысл разделять!!!
Хотя бы из-за банального количества логических чтений страниц в плане запросов.
8 июл 11, 03:33    [10942701]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
Makar4ik
А что бы не взять, и не потестить?
Добить в левой базе табличку до 5000% строк от текущей, разделить, и прогнать по ней самый пессимистичный запрос (из оптимистичных).

Если будет хотя-бы 50 на 50, то таки есть смысл разделять!!!
Хотя бы из-за банального количества логических чтений страниц в плане запросов.

Makar4ik, здесь не любят нормальную практику.
Это справедливо, в общем-то.
Вот только многовато здесь эмоционально взвинченных людей, с умным видом несущих всякую пургу про "комплексную оценку".

А вот послушать теоретическое обоснование от кого-то из авторитетов - это было бы полезно.
8 июл 11, 14:10    [10945598]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
начинающий sql-гуру
Member

Откуда: мяуский кот, родом из мая
Сообщений: 1299
начинающий sql-гуру
А вот послушать теоретическое обоснование от кого-то из авторитетов - это было бы полезно.

Но, ИМХО, чёткий критерий целесообразности, о которой спрашивал ТС, вывести не получится.

Только интуиция и опыт.
8 июл 11, 14:49    [10946002]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
Makar4ik
Member

Откуда: Когда-то были Лужки, а теперь Бордюр-Сити.
Сообщений: 2680
начинающий sql-гуру
Но, ИМХО, чёткий критерий целесообразности, о которой спрашивал ТС, вывести не получится.
Я тоже полагаю, что какой-то критерий целесообразности возможно вывести только эмпирическим путем, на конкретном железе, при конкретных выборках с конкретными запросами.
Ну вот это сделать и предложил. :)
8 июл 11, 17:33    [10947520]     Ответить | Цитировать Сообщить модератору
 Re: Целесообразность разделения таблицы на две  [new]
drserg
Member

Откуда:
Сообщений: 13
Только что закончили проверку с разделенными таблицами. В сравнении с одной таблицей ускорение по основным запросам стало выполняться быстрее на 10-15%. Не так много, как ожидалось, но думаю оно того стоит. Оставляем таблицы разделенными.

Спасибо всем за комментарии.
8 июл 11, 17:40    [10947584]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить