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. Хотя число записей одно и тоже.
Вопрос - почему так? И еще более важный, как это исправить?
Спасибо
И опять MS SQL вопрос
Правила форума
Пожалуйста, ознакомьтесь с правилами данного форума
Пожалуйста, ознакомьтесь с правилами данного форума
- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
Re: И опять MS SQL вопрос
MSSQL
посомтри исходник найдешь как просто один селект написать.
обычно если хочешь перформанс, то организовывать надо таким образом чтоб не трогать много данных.
exec sp_spaceused 'table1'aldep писал(а):select count(*) from table1
посомтри исходник найдешь как просто один селект написать.
column1 в индексе?aldep писал(а):select max(cloumn1) from table1
а не пора начать аггрегировать данные в кубик какой-нить?aldep писал(а):select avg(column1) from table1

- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
Нет не в индексе, но мне что надо все 500 колонок в индекс запихнуть?column1 в индексе?
Мне же не поиск по ним делать надо, а просто сумму всех посчитать.
Проблема в том, что я не database architect, а программер. Разным кубам не наученныйа не пора начать аггрегировать данные в кубик какой-нить? обычно если хочешь перформанс, то организовывать надо таким образом чтоб не трогать много данных.

Да и для того чтобы куб строить надо внутреннее устройство данных знать, а оно каждый раз свое.
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA
единственное что я могу тебе посоветовать.... это подкараулить того, что это надизайнил и темную ему устроить. то, что ты простой программер, то просто адресуй эти вопросы к вашему архитектору, дба, техническому лидеру. пусть репу чешут что делать. я могу сказать только одно: если приведенные тобой запросы обычное дело, то вам надо подумать о кубах. в таблицы с 500 колонками я "не верю". это надо менять скорее всего (до сих пор не могу поверить в такю таблицу...)ю коротким предложением: дизайн не отвечает требованиям раз ты задаешь вопросы "почему медленно".
хотите, могу посмотреть ваше дело на досуге. за денюжку какую нить
хотите, могу посмотреть ваше дело на досуге. за денюжку какую нить

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

Архитектор и технический лидер - я. А ДБА нет. Так что придется самому разбираться.
Вроде получилось сильно улучшить - убрал кластерный индекс, и поставил обычные на все столбцы.
Посмотреть на досуге - не пойдет.хотите, могу посмотреть ваше дело на досуге. за денюжку какую нить
А если ты database analyst'ом потянешь и заинтересован, то кинь резюме

- aldep
- Маньяк
- Сообщения: 1593
- Зарегистрирован: 18 фев 2003, 08:06
- Откуда: Toronto
- Контактная информация:
- папа Карло
- Шарманщик
- Сообщения: 8565
- Зарегистрирован: 17 фев 2003, 15:04
- Откуда: НН -> BC -> WA -> UT -> CA