Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
 Re: Простой запрос, а работает долго  [new]
PrettyMonstress
Member

Откуда:
Сообщений: 10
varelchik_f
т.е. замени ON на (nolock) on


В документации пишут WITH (NOLOCK).
Или можно просто (NOLOCK)?
4 дек 13, 12:53    [15238450]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
PrettyMonstress
Member

Откуда:
Сообщений: 10
o-o
не знаю, что еще за FileMaker, но явно подобная же графическая генерилка отчетов.


в вики написано, что файлмэйкер - э то реляционная СУБД+GUI в одном флаконе
4 дек 13, 12:56    [15238475]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
o-o
Guest
PrettyMonstress,
да в той же википедии второй строчкой читаем:
with a GUI-based interface, allowing users to modify the database by dragging new elements into layouts, screens, or forms

+ в конце:
FileMaker, since version 9, includes the ability to connect to a number of SQL databases without resorting to using SQL, including MySQL, SQL Server, and Oracle. This requires installation of the SQL database ODBC driver to connect to a SQL database. SQL databases can be used as data sources in FileMaker’s relationship graph, thus allowing the developer to create new layouts based on the SQL database; create, edit, and delete SQL records via FileMaker layouts and functions; and reference SQL fields in FileMaker calculations and script steps. It is a cross platform relational database application.

короче. та же графическая таскалка объектов.

-----------------------------------------------
про with nolock:
можно (nolock), но не нужно, без WITH -- deprecated,
пишите как в хэлпе
4 дек 13, 13:01    [15238523]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
varelchik_f
Member

Откуда:
Сообщений: 9
o-o,

жесть.
4 дек 13, 13:26    [15238767]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
varelchik_f
Member

Откуда:
Сообщений: 9
PrettyMonstress
varelchik_f
т.е. замени ON на (nolock) on


В документации пишут WITH (NOLOCK).
Или можно просто (NOLOCK)?

без разницы.
ты б уже давно опробовала а не разводила полемику.
4 дек 13, 13:29    [15238800]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
OlM
Guest
А еще, мне интуиция подсказывает, что dbo.TW_V_XXXXX - это скорее всего вьюхи, а не таблицы, иначе очень уж своеобразная структура у данных получается. Со всеми вытекающими. Даже интересно, права ли она, моя интуиция?
4 дек 13, 21:59    [15242237]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
o-o
Guest
OlM,

во прикол-то, если и правда, что это представления.
причем там, похоже, в одной таблице на 33 языках что-то лежит,
а они сделали 33 вьюхи, включив в каждую колонки только на соответствующем языке.
т.е. вместо выбора 33 колонок из одной таблицы
они 33 раза соединяют таблицу саму с собой, чтобы эти колонки выгрести, о-о.
завтра такое попробую сделать, интересно, сервер допрет, что это все в 1 таблицу раскрывается?
4 дек 13, 23:07    [15242475]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
OlM
Guest
А если уж продолжать изображать из себя Вольфа Мессинга, то рискну предположить, что таблица, на которую эти вьюхи смотрят, это классическая "свалка всего", типа
TABLE	tEverything 
(	id	INT
,	idItem	INT
,	idProperty	INT
,	strPropertyValue	NVARCHAR(MAX)
)

А вьюхи выглядят как
SELECT	idItem	AS ID
,	strPropertyValue	AS Street
FROM	tEverything 
WHERE	idProperty = 123456 -- Value for street names

На этом, боюсь, веселуха и закончится, потом что лечится такое только 25 годами ежедневного расстрела автора из рогатки и редизайном базы.
4 дек 13, 23:56    [15242729]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Сначала мне показалось, что это, как его называют, дизайн нового поколения - Anchor Modeling, где все таблицы приводят к 6-ой нормальной форме. Который, лично для меня весьма спорный, хотя они и доказывают, что 100500 джойнов это очень хорошо, намного лучше чем одна большая таблица. Но по крайней мере в том дизайне есть хоть какой то смысл, скажем при использовании в OLAP хранилищах, где большая часть аттрибутов меняются со временем.

Но здесь же что-то совсем другое. Скорее похоже на то, что кто-то взял одну широкую таблицу и разрезал её на 118 (?) мелких со связями 1 к 1-му. У кого нибудь есть идеи зачем это могло быть сделано? Какой в этом выигрыш?
Но что-то мне подсказывает, что dbo.TW_V_ это на самом деле не таблицы, а представления, тогда это все безобразие слито в одну Key-Value таблицу с разными типами.
PrettyMonstress, посмотрите структуру базы. dbo.TW_V_ это таблицы или все-таки представления? Если это действительно так, тогда понятно почему поехали оценки и ожидаемое количество строк даже не возможно произнести вслух. В любом случае ваши якобы 20% на самом деле могут быть как 99% так и 0%, потому что при таких нереальных оценках полагаться на эти проценты нельзя абсолютно.
5 дек 13, 00:38    [15242861]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
OlM
На этом, боюсь, веселуха и закончится, потом что лечится такое только 25 годами ежедневного расстрела автора из рогатки и редизайном базы.
+1
Одна из проблем тут это статистика. При таком большом количестве разнотипных данных запихнутых в одну таблицу и при условии что сервер хранит всего 200 значений мы получим очень плохие оценки, что собственно и можно наблюдать. Как вариант, попробовать разрулить созданием фильтрованных индексов/статистик под каждый тип. И еще пересчет статистик нужно обязательно и ВСЕГДА делать с FULLSCAN, а для этого придется отключить автоматическое обновление, что повлечет за собой другие проблемы. Но все равно нет 100% гарантии что оно после всего этого взлетит.
Ну и вряд ли это можно сделать в рамках задачи - "оптимизируйте запрос по фотографии без доступа к базе".

Как жаль, что для того чтобы заниматься дизайном БД не нужно получать лицензию...
5 дек 13, 00:50    [15242902]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
Glory
PrettyMonstress
Есть простейший запрос:

Мда. Что тогда есть сложный запрос ? В котором число таблиц идет на тысячи ?

PrettyMonstress
Только не знаю, на какое поле: PR.originator_rel_id или person_relation.id?

Что мешает попробывать все варианты ?


Топик в анналы запишите ...
Давно так не ржал...
5 дек 13, 09:17    [15243593]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
PrettyMonstress,

Таблицы вида
dbo.TW_V_XX
выглядят очень подозрительно...

А не перепроектировать ли вам вашу бд, слив это все в одну таблицу, и добавив в pk код страны? Можно также сделать view со старыми названиями таблиц и фильтром по стране, чтобы старые запросы работали.
5 дек 13, 09:24    [15243613]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
Glory
Member

Откуда:
Сообщений: 104751
Mind
Но здесь же что-то совсем другое. Скорее похоже на то, что кто-то взял одну широкую таблицу и разрезал её на 118 (?) мелких со связями 1 к 1-му. У кого нибудь есть идеи зачем это могло быть сделано? Какой в этом выигрыш?

Если связи необязательные, то таки образом уменьшают место занимаемое необязательными к заполнению полями.
5 дек 13, 10:12    [15243906]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
MasterZiv
А не перепроектировать ли вам вашу бд, слив это все в одну таблицу, и добавив в pk код страны? Можно также сделать view со старыми названиями таблиц и фильтром по стране, чтобы старые запросы работали.
Вы прочитайте топик с самого начала.

Вопрос задаёт человек, который не специалист по сиквелу, не имеет доступа к исходникам, не имеет доступа к самой системе :-)
5 дек 13, 10:12    [15243910]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
StarikNavy
Member

Откуда: Москва
Сообщений: 2414
MasterZiv
А не перепроектировать ли вам вашу бд


ей даже смотреть её не дают ))
5 дек 13, 10:16    [15243937]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
StarikNavy
MasterZiv
А не перепроектировать ли вам вашу бд


ей даже смотреть её не дают ))
Ага, даже неизвестно, как она работает, не то что "перепроектировать". Из подробностей, возможно, известно назначение системы, и может быть ещё название :-)
5 дек 13, 10:19    [15243966]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
alexeyvg
MasterZiv
А не перепроектировать ли вам вашу бд, слив это все в одну таблицу, и добавив в pk код страны? Можно также сделать view со старыми названиями таблиц и фильтром по стране, чтобы старые запросы работали.
Вы прочитайте топик с самого начала.

Вопрос задаёт человек, который не специалист по сиквелу, не имеет доступа к исходникам, не имеет доступа к самой системе :-)



Читаю, не все сразу....

А нахрена ж он тогда запросы пишет, если он не разработчик бд ?
Пусть тогда разработчик и пишет...
Вот ему тс и передаст наши пожелания, с большим базаданноразработческим приветом...
5 дек 13, 12:30    [15245353]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
varelchik_f
т.е. замени ON на (nolock) on


На кой?
5 дек 13, 12:33    [15245381]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
Мне дали голый запрос в тексте письма)))
Даже без разрешения запускать его на проде.
Просто рассказали, что с ним бывает)))
Он ещё из какой-то недоступной мне программы запускается, кстати)))

Т.е. ты и сама экстросенска, и нас такими же сделать хочешь ?

:-)
5 дек 13, 12:40    [15245428]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
PrettyMonstress
varelchik_f
Ты хинты поставила али нет?

ну тут пока что не советовали хинты.
только "б) поставить принудительный LOOP для dbo.Person_Relation"


Так это и есть хинты.
А nolock не ставь, это изменение функционала, поскольку снижение уровня изоляции до 0.read committed.

Лучше когда запрос запускается, смотреть блокировки (процедурой sp_lock всегда было, сейчас может быть что-то другое придумали).

И узнай, разрешен ли у них snapshot isolation на сервере. Если да, то это видимо не блокировки и запрос не из-за них тормозит.

Но мне кажется, что это все же план слетает из кэша и потом строится неверно.

Но чтобы это все понять, набор иметь:

-определения всех таблиц со всеми их индексами.
- мощность самих таблиц (размер в кол-ее записей)
- мощности про используемым в данном запросе предикатам, отдельно по условиям join, по условиям where и вместе по и тем, и другим. Про каждой таблице.

Ну и планы, в хорошем и плохом случаях.

А проще всего таких веселых работодателей просто послать в далекое пешее путешествие ...

Не, а че, наивность юзеров предела не имеет...
5 дек 13, 12:59    [15245658]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
PrettyMonstress
o-o
не знаю, что еще за FileMaker, но явно подобная же графическая генерилка отчетов.


в вики написано, что файлмэйкер - э то реляционная СУБД+GUI в одном флаконе


Да, это такой СУБД десктопный был, типа FoxPro, но на другом формате данных.
Теперь его видимо под клиента РСУБД подточили...
5 дек 13, 14:14    [15246483]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
PrettyMonstress
Member

Откуда:
Сообщений: 10
MasterZiv
планы, в хорошем и плохом случаях.


вот с этим совсем туго)))
5 дек 13, 14:15    [15246492]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
MasterZiv
Member

Откуда: Питер
Сообщений: 34703
PrettyMonstress
MasterZiv
планы, в хорошем и плохом случаях.


вот с этим совсем туго)))


Ну, можно и без них пока обойтись...
5 дек 13, 14:58    [15246875]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
o-o
Guest
o-o
OlM,

во прикол-то, если и правда, что это представления.
причем там, похоже, в одной таблице на 33 языках что-то лежит,
а они сделали 33 вьюхи, включив в каждую колонки только на соответствующем языке.
т.е. вместо выбора 33 колонок из одной таблицы
они 33 раза соединяют таблицу саму с собой, чтобы эти колонки выгрести, о-о.
завтра такое попробую сделать, интересно, сервер допрет, что это все в 1 таблицу раскрывается?


ничего там не раскрывается, 33 скана обеспечены.
прилагаю репро и устрашающую картинку

+

распивочиваем sys.messages, чтоб каждому языку выделить свой столбец:
select *
into dbo.mess
from (
	select message_id, language_id, text
	from sys.messages
	)t
	pivot (max(text) for language_id in ([1028], [1031], [1033], [1036], [1040], [1041], [1042], [1046], [1049], [2052], [3082]))p
	


теперь получим эту же таблицу, задействовав 10 супер-вьюшек,
каждая вьюха показывает сообщения только на своем языке:

declare @s varchar(400), @lang char(4); 

declare cur cursor fast_forward for 
select distinct language_id
from sys.messages
order by 1

open cur;
fetch next from cur into @lang;

while @@fetch_status = 0
begin
	set @s = 'create view vw_' + @lang + ' as select message_id, [' + @lang + '] from dbo.mess';
	exec(@s);
	
    fetch next from cur into @lang;
    end;

close cur;
deallocate cur;
---------------------------------------------------

select vw_1031.message_id, [1028], [1031], [1033], [1036], [1040], [1041], [1042], [1046], [1049], [2052], [3082] 
from vw_1028 left join vw_1031 on vw_1028.message_id = vw_1031.message_id
             left join vw_1033 on vw_1028.message_id = vw_1033.message_id
             left join vw_1036 on vw_1028.message_id = vw_1036.message_id
             left join vw_1040 on vw_1028.message_id = vw_1040.message_id
             left join vw_1041 on vw_1028.message_id = vw_1041.message_id
             left join vw_1042 on vw_1028.message_id = vw_1042.message_id
             left join vw_1046 on vw_1028.message_id = vw_1046.message_id
             left join vw_1049 on vw_1028.message_id = vw_1049.message_id
             left join vw_2052 on vw_1028.message_id = vw_2052.message_id
             left join vw_3082 on vw_1028.message_id = vw_3082.message_id


поздравим себя с отличным альтернативным способом собирания исходной таблицы через вьюхи на себя же


К сообщению приложен файл. Размер - 71Kb
5 дек 13, 16:03    [15247421]     Ответить | Цитировать Сообщить модератору
 Re: Простой запрос, а работает долго  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Glory
Mind
Но здесь же что-то совсем другое. Скорее похоже на то, что кто-то взял одну широкую таблицу и разрезал её на 118 (?) мелких со связями 1 к 1-му. У кого нибудь есть идеи зачем это могло быть сделано? Какой в этом выигрыш?

Если связи необязательные, то таки образом уменьшают место занимаемое необязательными к заполнению полями.
А разве Sparse Columns не делают тоже самое с меньшими трудозатратами?
5 дек 13, 21:20    [15249337]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 [2] 3   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить