powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск по ключу с проверкой на вхождение в интервал
4 сообщений из 4, страница 1 из 1
Поиск по ключу с проверкой на вхождение в интервал
    #37067975
yuramag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем!
Есть следующая задача. Дана таблица с полями: PKey, BeginDate, EndDate и Value.
PKey и BeginDate входят в первичный ключ. В таблице много записей и на каждый уникальный PKey приходится примерно по 15-25 различных записей с разными неперекрывающимися BeginDate и EndDate.
Существует необходимость кэширования записей - т.е. создание наиболее эффективной структуры данных с возможностью быстрого поиска по заданным PKey и некой дате попадающей в диапозон между BeginDate и EndDate.
Я смотрел в сторону различных В-деревьев, но не совсем понятно каким образом проверять дату на попадание в интервал? Ведь здесь идёт поиск не на точное сравнение ключей, а ещё и на сравнение по датам.
Если кто-нибудь сталкивался с подобными задачами, прошу помочь...
...
Рейтинг: 0 / 0
Поиск по ключу с проверкой на вхождение в интервал
    #37068060
Algol36
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
yuramag,
Возможно вам поможет такая структура данных как интервальное дерево?
http://en.wikipedia.org/wiki/Interval_tree
...
Рейтинг: 0 / 0
Поиск по ключу с проверкой на вхождение в интервал
    #37069790
yuramag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Algol36,


Похоже, что интервальное дерево это то, что нужно.
Спасибо!
...
Рейтинг: 0 / 0
Поиск по ключу с проверкой на вхождение в интервал
    #37069901
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если я правильно понял задачу, то решается таким запросом (синтаксис MySQL):
Код: plaintext
1.
2.
3.
SELECT * FROM (
SELECT * FROM mytable WHERE PKey= 123456  AND BeginDate<='2011-01-20' ORDER BY BeginDate LIMIT  1 
) t
WHERE '2011-01-20'<=EndDate
Понадобится еще индекс (PKey,BeginDate) если эти поля не являются первыми полями в первичном ключе именно в таком порядке.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Поиск по ключу с проверкой на вхождение в интервал
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]