Я пытаюсь работать с файлом .mdb около 15k + записей. Я использую ado в vbscript и asp запрашиваю базу данных. Запрос, который я делаю, выглядит примерно так. x в этом случае является просто переменной, которая содержит текущую дату в форме mm/dd/yyyy
.Слишком длинный запрос доступа
rs.Open "SELECT [Item Number], [Qty], [Delivery Point]
FROM [ItemBoard]
WHERE format([Submitted Date/Time], 'mm/dd/yyyy') = '"&x&"'
AND [OrderUrgency] = 'Rush'
AND ([Delivered] is NOT NULL OR [Delivered Short] is NOT NULL)", conn
Моя проблема заключается в том, что этот запрос занимает более одной минуты для завершения, что слишком высоко. Более того, если я изменяю предложение Where, чтобы иметь только одну из трех статусов, а не все три из них, время завершения запроса сокращается примерно до 50-55 секунд. Существуют ли какие-либо вероятные кандидаты на причины этой проблемы помимо структуры самой базы данных?
Формат 'WHERE ([Дата отправки/время], 'mm/dd/yyyy') =', механизм db не может использовать индексированный поиск для '[Date Date/Time]'. Если это поле является типом даты/времени, выполните сравнение даты вместо сравнения строк и убедитесь, что поле индексировано. Если этого недостаточно, покажите нам, что такое 'x'. – HansUp
@HansUp Я могу добавить разъяснение x в свой пост и, безусловно, сделаю это улучшение, но, как я сказал выше, даже если я оставлю это из предложения where, я все равно получаю 50-55 секундное время завершения. – Naiya55
Aha. Когда вы сказали, что «есть только одна из трех статуй», вы не сказали, какой из них. Затем используйте '[Date Date/Time] = Date()' и убедитесь, что индексируются как '[Date Date/Time], так и' [OrderUrgency] '. Если этого недостаточно, я бы переключился с ADO на DAO. – HansUp