Вопрос оптимизации чтения данных из архива
-
- Сообщения: 20
- Зарегистрирован: 06 апр 2005, 10:27
-
- Сообщения: 20
- Зарегистрирован: 06 апр 2005, 10:27
на двойке это делается подзапросом , на 1,5 можно подумать про процедуру только не уверен что там можно будет выиграть в скорости.Dmitry Dyachenko писал(а):Причем так, что получается делать выборки на дату одним запросом. Вот это и интересно.
это то я как раз понял, я про то что пока это выполняется милион раз выиграть время там сложно, только изменением структуры БД, которое примерно обрисовал в преведущем сообщении.WildSery писал(а):В смысле? Он же 700 тыс. раз выполняется. Сравни время выполнения с пустой прогонкой - больше половины времени занимает.Attid писал(а):никак не пойму как этот запрос может влиять, когда сам он доли секунд выполняется =/
Tmp-table и двухпроходность? Если проблема таки в скане, то от неё всё равно не уйдёшь, а вот запросы, использующие результат (если таковые есть) могут кардинально ускориться. В смысле после переписывания и их и всего кода процедурыWildSery писал(а):У меня тут мысля появилась, пока что бредовая, её нужно подумать.Dmitry Dyachenko писал(а):
Покажи или расскажи как у тебя дата среза формируется.

-
- Сообщения: 3
- Зарегистрирован: 13 мар 2008, 22:26
Я эту проблему решаю путем хранения не даты изменения, а интервала валидности. В этом случае нечто на дату выбирается одним between. На моих данных (14 млн записей) все работает достаточно быстро. Хотя конечно больше гимора с insert, update и delete.Dmitry Dyachenko писал(а):А если не у меня. Задачи ведь похожие по сути. Тебе тоже нужно узнавать нечто на дату. И это нечто как-то хранится. Причем так, что получается делать выборки на дату одним запросом. Вот это и интересно.
Такая схема хранения у меня тоже есть. И выбор по схеме
может быть быстрее, особенно при наличии индекса (TYPE, DATE_BEG, DATE_END)
Но тут всё равно ещё и от распределения данных зависимость есть.
Код: Выделить всё
select * from table where type = :type and :adate between date_beg and date_end
Но тут всё равно ещё и от распределения данных зависимость есть.
Хранение диапазонов и обеспечение их непересекаемости есть великое граблеполе в конкурентной многопользовательской среде. Если есть возможность организационно-естественно добиться однопользовательства в информационных функциях управления диапазонами и подкрепить резервированием таблиц на момент их выполнения - в общем нормально, хоть и всё равно немного хлопотно.