Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема со скоростью запроса [D7, MSSQL]


Страницы:   1 2

Barmutik ©   (2004-11-19 10:10:00) 

Появилась следющего рода проблема в MS SQL Server 2000:

Есть таблица с некоторым набором полей. В таблице есть IDxx (типа int)- Primary key. Встала необходимость делать запросы следующего вида:
SELECT IDxx, MyField FROM MyTAble WHERE IDxx IN (.....)

Проблема заключается во времени реации сервера на запрос.

Если количество значений в IN не большое то запрос работает мгновенно... Но если она ставновится больше 500 ... то время реакции увеличивается до 8-10 секунд.... что не приемлимо...

Проблема абсолютно непонятна учитывая что в данной таблице порядка 4000 (4 тысячи всего) записей...

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

Повторный запрос происходит мгновенно .. что в принципе и понятно он находится в кэше сервера.

Серверный компьютер: 2-х процессорный на Intel Pentium 4 2.8 Gh c 2 Gb оперативки

Подскажите в чём грабли ...


Sergey13   (2004-11-19 10:48:00) [21]

2[3] Barmutik   (19.11.04 10:44)
Значит ты возможноне доработал структуру БД.


Johnmen   (2004-11-19 10:47:00) [22]

> вариант не самый приятный..

А что надо, приятность или скорость ?
:)


Barmutik   (2004-11-19 10:44:00) [23]

Спасибо .. просто мне достаточно часто нужен этот запрос...

И в этом IN может быть 2000-3000 элементов... просто если мне такой запрос надо делать раз в 5 секунд... то как-то перед этим запихивать их в базу... вариант не самый приятный.. а если несколько таких запросов одновременно...


Johnmen   (2004-11-19 10:19:00) [24]

Да. Индекс не поможет, т.к. идёт тупой перебор набора в IN.
Стандартное решение при большом наборе в IN - писать их во временную табл. и соединять её с основной.
О чём уже сказал Sergey13 ©.


Sergey13   (2004-11-19 10:14:00) [25]

IN он такой. А как формируются эти 500 значений? Может их в какую нить табличку писать и подсовывать потом.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо