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

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

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

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

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

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

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

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

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

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

спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2013, 14:15
Ответы с готовыми решениями:

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

Какой запрос быстрее, лучше?
select m.name, c.course, c.date_of_changing from money as m inner join courses...

Быстрый перенос ключей и ограничений
Вопрос - как развитие следующей темы:...

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

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

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

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

ладно. проехали. пойду учить матчасть.
0
invm
1853 / 1258 / 367
Регистрация: 02.06.2013
Сообщений: 3,184
06.11.2013, 17:38 #7
ivantar, чтобы ответить как будет быстрее всего, нужно то, что я запросил в первом ответе.
Считаете, что это излишне? Да ради Бога, настаивать не собираюсь...
0
cygapb-007
1306 / 938 / 144
Регистрация: 17.01.2013
Сообщений: 2,348
08.11.2013, 08:48 #8
Создайте во всех таблицах индекс по [категория]
0
ivantar
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
09.11.2013, 11:40  [ТС] #9
а я пока решил переделать наследство.
порылся дальше, разобрался где это используется и выяснилось, что целиком эта таблица нигде и не используется (!).
переделал из сборки в одну таблицу, в 4 сборки в 4 таблицы.
переделал в коде там, где все это используются.
стало на порядок быстрее.
0
ivantar
0 / 0 / 0
Регистрация: 31.10.2013
Сообщений: 23
10.11.2013, 23:30  [ТС] #10
а затем проверил не куда все это идет, а откуда.
и опять все переделал глобально.

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

вопрос примерно такой: в каких случаях используется представление?
почему запрос, что в представлении, лучше не оставить где-нить в какой-нить хранимой для заполнения временной таблицы, которую потом дальше и использовать вместо представления?
0
invm
1853 / 1258 / 367
Регистрация: 02.06.2013
Сообщений: 3,184
11.11.2013, 00:02 #11
Цитата Сообщение от ivantar Посмотреть сообщение
вопрос примерно такой: в каких случаях используется представление?
почему запрос, что в представлении, лучше не оставить где-нить в какой-нить хранимой для заполнения временной таблицы, которую потом дальше и использовать вместо представления?
Ответы, как обычно, - в планах выполнения. Но анализировать их вы, судя по всему, не желаете.
Типичная ошибка новичков - святая вера в существование универсальных методов, позволяющих добиться "быстрой работы" при любых условиях.
0
11.11.2013, 00:02
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.11.2013, 00:02

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

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

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


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

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

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