Re[8]: Запрос виснет. Глюк?
От: Сергей Прохоренко Беларусь  
Дата: 12.06.07 15:57
Оценка:
Здравствуйте, Андрийко, Вы писали:

СП>>Вьюха из dbo.Tests выбирает только те записи, которые работали с последней прошивкой.

А>... исхдя из этого (если я правильно понял задачу)
А>запросик можно привести к виду (возможно он будет эффективней за счет уменьшения кол-во обращения к Tests):
А>
А>SELECT TestID FROM   Tests  WHERE exists(select * from ROMDate where ROMDate.Date <= Tests.TestDate  )
А>


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

А>и еще, исходя из вашего запроса и то как я понял задачу выборки последней прошивки, поле TestType особой роли не играет


Играет, по каждому типу своя последняя дата. Впрочем, как я уже сказал, задача — понять, почему дуркует оптимизатор, а не оптимизировать запрос...

А>поля TestID и TestDate(+TestType ) — сделайте на нее покрывающий индекс на поля след. последовательности: (TestType,) ну а если я не прав, тоды


См. выше — база не моя, индексы не я тюнингую. Но и нам не страшен — ведь достаточно выбирать данные из всех таблиц, и оптимизатор работает нормально. Понять просто хотелось, почему он работает неправильно в данном случае.

Ну да ладно, уже видно, что решения найти ремотно не получается
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.