Форум программистов, компьютерный форум, киберфорум
Microsoft SQL Server
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.62/13: Рейтинг темы: голосов - 13, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
1

какой запрос самый быстрый?

06.11.2013, 14:15. Показов 2384. Ответов 10
Метки нет (Все метки)

здравствуйте

вот есть 7 таблиц с двумя полями
[категория],[значение]

в первой полный список категорий, в последующих - не обязательно.

надо их по полю "категория" объединить в одну таблицу типа
[категория],[значение 1],isnull([значение 2],0)... isnull([значение 7],0)

как это сделать быстрее всего?

например, последовательный left join работает как-то очень долго, я вручную быстрее разложу

мне кажется, должны быть какие-то приемы...

спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.11.2013, 14:15
Ответы с готовыми решениями:

Самый быстрый запрос что бы узнать, есть ли хотя бы одна подходящая запись в столбце таблицы
Имеется довольно большая БД. Довольно часто для нахождение "Где это лежит?" используем самописную...

Какой самый быстрый архиватор ?
Какой самый быстрый архиватор и распаковщик ?:help:

Какой Windows-браузер самый быстрый?
Сайт LegitReviews решил протестировать 13 самых популярных браузеров на предмет скорости исполнения...

Какой язык программирования самый быстрый?
Доброго времени суток, дорогие программисты. Необходимо написать программу, которая автоматически...

10
3192 / 1933 / 686
Регистрация: 02.06.2013
Сообщений: 4,736
06.11.2013, 15:06 2
Все вопросы по оптимизации запросов должны сопровождаться самим запросом, DDL таблиц и индексов, планом выполнения. А не вольным словесным изложением всего вышеперичисленного.
0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
06.11.2013, 15:30  [ТС] 3
меня интересует именно теория решения подобной, уверен, стандартной задачи (наиболее быстрое объединение n штук таблиц по одному общему полю), ответ на основе вашего опыта или хитрых знаний.
а не решение конкретного примера.
уверен, что ни от названия полей, таблиц, ни от кол-ва записей в них решение не зависит.
0
1518 / 1082 / 152
Регистрация: 23.07.2010
Сообщений: 6,026
06.11.2013, 15:37 4
Вам шашки или ехать?
Если в схеме данных имеется n таблиц с 2-мя одинаковыми полями - "на лице" ошибка проектирования
Если СД досталась в наследство - создать свою и union в помощь.
Либо что-то не договариваем...
0
3192 / 1933 / 686
Регистрация: 02.06.2013
Сообщений: 4,736
06.11.2013, 15:46 5
ivantar, ну тогда ждите, когда появится некто, знающий Универсальное Волшебное Средство Оптимизации Произвольного Запроса. Я такого не знаю.
1
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
06.11.2013, 17:28  [ТС] 6
invm, речь идет не об оптимизации, а о создании нового.
вот я, такой ламер, пришел и говорю: е-мое, много таблиц и что с ними делать?
а вы, такие гуру: не дрефь, вот так и вот так. но быстрее всего вот так!
я: во! быстрее всего-то мне и нужно! спасибо вам, гуру дорогие.

pincet, да, наследство. но тут сходу не придумаешь что иначе можно сделать. из разных мест набираются разные таблицы и вязать их по одному полю.

ладно. проехали. пойду учить матчасть.
0
3192 / 1933 / 686
Регистрация: 02.06.2013
Сообщений: 4,736
06.11.2013, 17:38 7
ivantar, чтобы ответить как будет быстрее всего, нужно то, что я запросил в первом ответе.
Считаете, что это излишне? Да ради Бога, настаивать не собираюсь...
0
1311 / 943 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
08.11.2013, 08:48 8
Создайте во всех таблицах индекс по [категория]
0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
09.11.2013, 11:40  [ТС] 9
а я пока решил переделать наследство.
порылся дальше, разобрался где это используется и выяснилось, что целиком эта таблица нигде и не используется (!).
переделал из сборки в одну таблицу, в 4 сборки в 4 таблицы.
переделал в коде там, где все это используются.
стало на порядок быстрее.
0
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
10.11.2013, 23:30  [ТС] 10
а затем проверил не куда все это идет, а откуда.
и опять все переделал глобально.

там был такой момент.
был запрос с объединением представлений.
я их упростил и т.п. и все равно такое объединение работало довольно медленно.
тогда я результаты этих представлений сохранил в таблицы и объединял таблицы.
работает намного быстрее, намного.

вопрос примерно такой: в каких случаях используется представление?
почему запрос, что в представлении, лучше не оставить где-нить в какой-нить хранимой для заполнения временной таблицы, которую потом дальше и использовать вместо представления?
0
3192 / 1933 / 686
Регистрация: 02.06.2013
Сообщений: 4,736
11.11.2013, 00:02 11
Цитата Сообщение от ivantar Посмотреть сообщение
вопрос примерно такой: в каких случаях используется представление?
почему запрос, что в представлении, лучше не оставить где-нить в какой-нить хранимой для заполнения временной таблицы, которую потом дальше и использовать вместо представления?
Ответы, как обычно, - в планах выполнения. Но анализировать их вы, судя по всему, не желаете.
Типичная ошибка новичков - святая вера в существование универсальных методов, позволяющих добиться "быстрой работы" при любых условиях.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2013, 00:02

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Какой способ рисования самый быстрый?
Вот нашел интересный код рисования на WinApi, переводил с языка С++: procedure...

Какой Windows самый быстрый и оптимизированный?
Windows 7, Windows 8 или Windows 10? Делимся мнениями и фактами, господа.

Какой самый быстрый способ решения СЛАУ?
Доброго дня. Помогите выбрать СЛАУ(системы линейных алгебраических уравнений), которым СЛАУ будет...

Какой способ сортировки одномерного массива самый быстрый?
Нужно написать программу как можно очень быстро сортирующую одномерный массив из 1000 элементов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.