И опять MS SQL вопрос

Все, что вы хотели знать о программизме, но боялись спросить.
Ответить
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

И опять MS SQL вопрос

Сообщение aldep »

MS SQL
Есть две таблицы. В одной table1 500 столбцов и пол миллиона записей.
Есть primary key он же clustered index.
Есть другая таблица table2. В ней два столбца. Данные в них копия primary key и еще одного столбца из первой таблицы. Так же стоит clustered index на primary key.
Проблема в том, что запросы типа
select count(*) from table1
select max(cloumn1) from table1
select avg(column1) from table1
и тд.
исполняются в 30-50 раз медленнее, чем те же запросы, но на table2. Хотя число записей одно и тоже.
Вопрос - почему так? И еще более важный, как это исправить?
Спасибо
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Re: И опять MS SQL вопрос

Сообщение папа Карло »

MSSQL
aldep писал(а):select count(*) from table1
exec sp_spaceused 'table1'

посомтри исходник найдешь как просто один селект написать.
aldep писал(а):select max(cloumn1) from table1
column1 в индексе?
aldep писал(а):select avg(column1) from table1
а не пора начать аггрегировать данные в кубик какой-нить? :) обычно если хочешь перформанс, то организовывать надо таким образом чтоб не трогать много данных.
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

column1 в индексе?
Нет не в индексе, но мне что надо все 500 колонок в индекс запихнуть?
Мне же не поиск по ним делать надо, а просто сумму всех посчитать.
а не пора начать аггрегировать данные в кубик какой-нить? обычно если хочешь перформанс, то организовывать надо таким образом чтоб не трогать много данных.
Проблема в том, что я не database architect, а программер. Разным кубам не наученный :)
Да и для того чтобы куб строить надо внутреннее устройство данных знать, а оно каждый раз свое.
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

единственное что я могу тебе посоветовать.... это подкараулить того, что это надизайнил и темную ему устроить. то, что ты простой программер, то просто адресуй эти вопросы к вашему архитектору, дба, техническому лидеру. пусть репу чешут что делать. я могу сказать только одно: если приведенные тобой запросы обычное дело, то вам надо подумать о кубах. в таблицы с 500 колонками я "не верю". это надо менять скорее всего (до сих пор не могу поверить в такю таблицу...)ю коротким предложением: дизайн не отвечает требованиям раз ты задаешь вопросы "почему медленно".

хотите, могу посмотреть ваше дело на досуге. за денюжку какую нить :)
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

Темную с удовольствием да далеко они - Census Canada такое устроила. :)
Архитектор и технический лидер - я. А ДБА нет. Так что придется самому разбираться.
Вроде получилось сильно улучшить - убрал кластерный индекс, и поставил обычные на все столбцы.
хотите, могу посмотреть ваше дело на досуге. за денюжку какую нить
Посмотреть на досуге - не пойдет.
А если ты database analyst'ом потянешь и заинтересован, то кинь резюме :)
Аватара пользователя
aldep
Маньяк
Сообщения: 1593
Зарегистрирован: 18 фев 2003, 08:06
Откуда: Toronto
Контактная информация:

Сообщение aldep »

Да и еще. Спасибо за помощь :P
Аватара пользователя
папа Карло
Шарманщик
Сообщения: 8565
Зарегистрирован: 17 фев 2003, 15:04
Откуда: НН -> BC -> WA -> UT -> CA

Сообщение папа Карло »

хе-хе.... иди приват читай :)
Ответить