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

Откуда:
Сообщений: 11
Всем доброго времени!
Подскажите пожалуйста, может что не так делаю :
MS SQL 2005
две связанные между собой таблицы(T_Enquete, T_IMAGE ), в таблице T_IMAGE есть поле типа [image] (c_Data)
делаю вроде простой запрос :
select c_Date,
c_FamilyName,
c_Patronym,
c_Phone,
c_Email,
c_City,
c_CardNumber,
i.c_Name,
c_EnqueteID,
i.c_Data
from T_Enquete e
INNER JOIN T_IMAGE i ON e.c_ImageID = i.c_ImageID
where (c_Date >= '17/05/2005') and (c_Date <= '18/05/2005')
order by c_date

выборка 4 тысяч записей занимает 2 минуты в Managmente Studio, а из клиентского приложения вообще зависает.
Собственно хотел спросить, это нормально с полями типа [image] или все таки может с запросом что не так?
Заранее благодарен.
19 авг 09, 11:34    [7555257]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
iljy
Member

Откуда:
Сообщений: 8711
dls-slv,

план покажите
19 авг 09, 11:35    [7555278]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
Джоин по блобам ап ту 2 гига каждый и без возможности вешать по ним индекс? Оригинально.

Сообщение было отредактировано: 19 авг 09, 11:36
19 авг 09, 11:36    [7555280]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
iljy
Member

Откуда:
Сообщений: 8711
Гавриленко Сергей Алексеевич
Джоин по блобам ап ту 2 гига каждый и без возможности вешать по ним индекс? Оригинально.


? в смысле? BLOB - это c_data, а join идем по c_ImageID
19 авг 09, 11:37    [7555298]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
iljy
Гавриленко Сергей Алексеевич
Джоин по блобам ап ту 2 гига каждый и без возможности вешать по ним индекс? Оригинально.


? в смысле? BLOB - это c_data, а join идем по c_ImageID

Да, наверное. Однако вопрос размеров блоба так и не раскрыт.
19 авг 09, 11:39    [7555315]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Glory
Member

Откуда:
Сообщений: 104760
iljy
Гавриленко Сергей Алексеевич
Джоин по блобам ап ту 2 гига каждый и без возможности вешать по ним индекс? Оригинально.


? в смысле? BLOB - это c_data, а join идем по c_ImageID

Но клиенту то содержимое BLOB-а все равно придется передавать.
4000 x 2Гб - это 8000Гб
19 авг 09, 11:40    [7555323]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
iljy
Member

Откуда:
Сообщений: 8711
Glory,

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

dls-slv, кстати попробуйте убрать поеле i.c_Data из списка. Или на NULL его замените, чтоб клиентсоке приложение изменением списка выборки не травмировать
19 авг 09, 11:44    [7555369]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
это вроде план(честно, никогда не делал)
  |--Sort(ORDER BY:([e].[c_Date] ASC))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[c_ImageID], [Expr1004]) WITH UNORDERED    PREFETCH)
            |--Clustered Index Scan(OBJECT:([MVEnquete].[dbo].[T_Enquete].[PK_T_Enquete] AS [e]), WHERE:([MVEnquete].[dbo].[T_Enquete].[c_Date] as [e].[c_Date]>='2009-08-18 00:00:00.000' AND [MVEnquete].[dbo].[T_Enquete].[c_Date] as [e].[c_Date]<='2009-08-19 00:00:00.000'))
            |--Clustered Index Seek(OBJECT:([MVEnquete].[dbo].[T_Image].[PK_T_Image] AS [i]), SEEK:([i].[c_ImageID]=[MVEnquete].[dbo].[T_Enquete].[c_ImageID] as [e].[c_ImageID]) ORDERED FORWARD)

насчет размера image - 2Гб конечно нет, где то 500кб размер самих .img, а вот какого размера они в базе хранятся не знаю, как глянуть подскажите..?

Сообщение было отредактировано: 19 авг 09, 11:54
19 авг 09, 11:51    [7555430]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
Сколько записей в T_Enquete? Какие на ней индексы?
19 авг 09, 11:54    [7555458]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
to iliy
собственно убрать то можно, но значение этого поля потом используется, для отображения собственно хранящегося там img.
19 авг 09, 11:54    [7555459]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
115 тысяч

индекс один
ALTER TABLE [dbo].[T_Enquete] ADD CONSTRAINT [PK_T_Enquete] PRIMARY KEY CLUSTERED
(
[c_EnqueteID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
19 авг 09, 11:58    [7555490]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Glory
Member

Откуда:
Сообщений: 104760
dls-slv
to iliy
собственно убрать то можно, но значение этого поля потом используется, для отображения собственно хранящегося там img.

Вы читаете, что вам предлагают то ?
Вам предлагают измерить время работы запроса с блоб полем и без него. Чтобы понять, влияет ли объем выбираемых блобов на время работы
19 авг 09, 12:00    [7555506]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
to Glory
я то читаю конечно..
естественно и до совета выбирал и с блобами и без и естественно без блобов работает 2 секунды, а с блобами 2 минуты..
19 авг 09, 12:04    [7555538]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36814
dls-slv
to Glory
я то читаю конечно..
естественно и до совета выбирал и с блобами и без и естественно без блобов работает 2 секунды, а с блобами 2 минуты..
И вы сравнили планы запросов с блобами и без?
19 авг 09, 12:07    [7555558]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
первый был с блобами, этот без :

  |--Sort(ORDER BY:([e].[c_Date] ASC))
       |--Nested Loops(Inner Join, OUTER REFERENCES:([e].[c_ImageID], [Expr1004]) WITH UNORDERED PREFETCH)
            |--Clustered Index Scan(OBJECT:([MVEnquete].[dbo].[T_Enquete].[PK_T_Enquete] AS [e]), WHERE:([MVEnquete].[dbo].[T_Enquete].[c_Date] as [e].[c_Date]>='2009-08-18 00:00:00.000' AND [MVEnquete].[dbo].[T_Enquete].[c_Date] as [e].[c_Date]<='2009-08-19 00:00:00.000'))
            |--Clustered Index Seek(OBJECT:([MVEnquete].[dbo].[T_Image].[PK_T_Image] AS [i]), SEEK:([i].[c_ImageID]=[MVEnquete].[dbo].[T_Enquete].[c_ImageID] as [e].[c_ImageID]) ORDERED FORWARD)
если честно не знаю как их сравнивать..:(

Сообщение было отредактировано: 19 авг 09, 12:11
19 авг 09, 12:10    [7555572]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Glory
Member

Откуда:
Сообщений: 104760
dls-slv

если честно не знаю как их сравнивать..:(

По-буквенно. Т.к. планы одинаковые, то значит проблема в объеме передаваемых данных полученных в результате запроса
19 авг 09, 12:13    [7555588]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Anddros
Member

Откуда:
Сообщений: 1077
4000 записей * 500кб = 2 гига

Это столько у вас на клиента тащится. Вам оно надо?
19 авг 09, 12:15    [7555598]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
Anddros
4000 записей * 500кб = 2 гига

Это столько у вас на клиента тащится. Вам оно надо?

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

Glory
По-буквенно. Т.к. планы одинаковые, то значит проблема в объеме передаваемых данных полученных в результате запроса


По моему это было понятно и без сравнения планов по-буквенно..
19 авг 09, 12:26    [7555647]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Glory
Member

Откуда:
Сообщений: 104760
dls-slv


Glory
По-буквенно. Т.к. планы одинаковые, то значит проблема в объеме передаваемых данных полученных в результате запроса


По моему это было понятно и без сравнения планов по-буквенно..

Да что вы говорите ?
Пока вас не "запытали", вы и словом не обмолвились, об объеме выбираемых данных
19 авг 09, 12:28    [7555654]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Var79
Member

Откуда:
Сообщений: 890
dls-slv
Anddros
4000 записей * 500кб = 2 гига

Это столько у вас на клиента тащится. Вам оно надо?

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

Glory
По-буквенно. Т.к. планы одинаковые, то значит проблема в объеме передаваемых данных полученных в результате запроса


По моему это было понятно и без сравнения планов по-буквенно..

тогда зачем говорить "или все таки может с запросом что не так?"
19 авг 09, 12:33    [7555694]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
Glory

Да что вы говорите ?
Пока вас не "запытали", вы и словом не обмолвились, об объеме выбираемых данных


что то я не увидел где тут меня "пытали" о размере блобов :) может покажите? ;) и написал почти сразу.. но ваша агрессия собственно сути вопроса не раскрывает..к сожалению..
19 авг 09, 12:34    [7555704]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
dls-slv
Anddros
4000 записей * 500кб = 2 гига

Это столько у вас на клиента тащится. Вам оно надо?

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

Glory
По-буквенно. Т.к. планы одинаковые, то значит проблема в объеме передаваемых данных полученных в результате запроса


По моему это было понятно и без сравнения планов по-буквенно..

и что, все 4000 картинок прям таки сразу нужны на клиенте?
19 авг 09, 12:35    [7555714]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Алексей2003
Member

Откуда: Москва
Сообщений: 5645
dls-slv
Glory

Да что вы говорите ?
Пока вас не "запытали", вы и словом не обмолвились, об объеме выбираемых данных


что то я не увидел где тут меня "пытали" о размере блобов :) может покажите? ;) и написал почти сразу.. но ваша агрессия собственно сути вопроса не раскрывает..к сожалению..

а на этом форуме много приходящих профессионалов, которые считают что select * from table самый простой запрос. и поэтому ничего упоминать не нужно. все само должно быть всем понятно.
19 авг 09, 12:37    [7555724]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
dls-slv
Member

Откуда:
Сообщений: 11
Алексей2003

и что, все 4000 картинок прям таки сразу нужны на клиенте?

да нет..сейчас конечно понятно что нужно придумывать что то другое с клиентом..

Var79
тогда зачем говорить "или все таки может с запросом что не так?"

я не говорил, а спросил..здесь же форум, где МОЖНО задавать вопросы? или я ошибся? :)
19 авг 09, 12:42    [7555749]     Ответить | Цитировать Сообщить модератору
 Re: Помогите с запросом плиз  [new]
Glory
Member

Откуда:
Сообщений: 104760
dls-slv
Glory

Да что вы говорите ?
Пока вас не "запытали", вы и словом не обмолвились, об объеме выбираемых данных


что то я не увидел где тут меня "пытали" о размере блобов :) может покажите? ;) и написал почти сразу.. но ваша агрессия собственно сути вопроса не раскрывает..к сожалению..

суть вопроса такова, что нельзя прокачать через сеть 2кб и 2Гб за одинаковое время.
И сервер вам ничем тут не поможет
Если вы знали, что "проблемы" начинаются при добавлени в запрос блоб поля и план при этом не меняется, но умолчали об этом, то вы просто украли чужое время.
19 авг 09, 12:56    [7555856]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить