Можно ли ускорить такой запрос?

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Можно ли ускорить такой запрос?

Сообщение Gmp » 21.08.2006 (Пн) 15:38

Можно ли ускорить такой запрос?

Код: Выделить всё
SELECT DISTINCT ID, Benutzer, SPID, Methode, (SELECT 1 FROM TraceFiles t1 WHERE t1.id = tracefiles.id AND t1.Benutzer = tracefiles.benutzer AND t1.spid = tracefiles.spid AND t1.methode = tracefiles.methode AND Sgn(InStr(t1.Befehl, 'Abort'))=1) AS Abort FROM TraceFiles ORDER BY id


Acceess такой запрос еле переваривает.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 21.08.2006 (Пн) 16:00

Онлайн-логирование в аксессе... Недолго эта база проживет.

Твой запрос (скорее всего - предположение справедливо в случае, если множество полей (ID, Benutzer, SPID, Methode) полностью включает в себя первичный ключ либо хотя бы одно уникальное ограничение, определенное для этой таблицы) эквивалентен следующему:
Код: Выделить всё
SELECT DISTINCT ID, Benutzer, SPID, Methode, 1
from TraceFiles
where Befehl like '*Abort*'
order by id

Не думаю, что это сильно его ускорит, впрочем - при поиске по подстроке в произвольном месте (с ведущим *) индекс на это поле не используется, хоть кол ему на голове затеши.

И еще не совсем понятно, зачем тебе эта единица в селект листе. Ну да хозяин-барин

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 24.08.2006 (Чт) 10:17

Ennor
Это не совсем то что нужно.

Просто вот такой запрос
Код: Выделить всё
SELECT DISTINCT ID, Benutzer, SPID, Methode, Sgn(InStr(Befehl, 'Abort')) as Abort FROM TraceFiles ORDER BY id

выдает двойное значение с 0 и 1, что вполне понятно потому как не везде есть "Abort" :)

Подвесил для теста базу.

Тут мы получим при таком запросе двойное значение:

ID Benutzer SPID Methode Abort
1 SAO SPID 53 BLReceipt SetOrdDelivQuant 0
1 SAO SPID 53 BLReceipt SetOrdDelivQuant 1

А хочется только того где Abort = 1.
У вас нет доступа для просмотра вложений в этом сообщении.

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 24.08.2006 (Чт) 12:16

Код: Выделить всё
WHERE Befehl LIKE '*Abort*'

Интересно, что заставляет тебя так упорно игнорировать WHERE-часть этого запроса...

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 24.08.2006 (Чт) 13:24

Ennor
Если бы мне надо было получить из всех только то где есть "аборт" я бы не спрашивал. :) Просто посмотри что делает твой запрос и мой(из первого поста) Мой убирает дубликат, твой просто выбирает то где есть "аборт".
Последний раз редактировалось Gmp 24.08.2006 (Чт) 13:38, всего редактировалось 1 раз.

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 24.08.2006 (Чт) 13:27

Мой запрос:
Код: Выделить всё
ID   Benutzer   SPID   Methode   Abort
1   SAO   SPID 53   BLReceipt SetOrdDelivQuant    1
2   SAO   SPID 53   BLReceipt MakeDeliveryFromOrder    
3   SAO   SPID 53   DODatastore GetRecordSetX    
4   SAO   SPID 53   BODocRef (DOData) LoadX    


Твой запрос:
Код: Выделить всё
ID   Benutzer   SPID   Methode   Expr1004
1   SAO   SPID 53   BLReceipt SetOrdDelivQuant    1

Gmp
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 68
Зарегистрирован: 22.07.2006 (Сб) 17:04
Откуда: Германия

Сообщение Gmp » 24.08.2006 (Чт) 14:41

Проблема решена сделал 2 запроса. :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 24.08.2006 (Чт) 14:45

UNION - это твой случай


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex-бот и гости: 1

    TopList