Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / быстро выбрать N равномерно распределённых по интервалу точек / 13 сообщений из 13, страница 1 из 1
05.06.2006, 14:30
    #33772376
DMart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
Добрый день,

используется MySQL, в таблице хранятся точки (X, Y) большого числа кривых (FK: SeriesID), для каждой кривой может быть очень много точек. Нужно как можно быстрее выбрать для заданной кривой небольшое количество точек (скажем 1000, ($count)) равномерно распределённых на заданном интервале [$min, $max].
Равномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо.

вопрос в том -- что сделать чтобы было быстро. Добавить какие-нибудь доп. колонки к уже имеющимся (PK: ID, X, Y, FK: SeriesID). Хитро накинуть индексы (изначально стоят индексы на ID, X и (SeriesID, X))

Были идеи делать:

-- 1 запрос: SELECT DISTINCT MAX(SeriesID), MAX(X), MAX(Y) FROM Points WHERE X > $min AND X < $max AND SeriesID = $curve GROUP BY FLOOR( (X - $min)/($max - $min) * $count )
или

-- $count запросов SELECT * FROM Points WHERE X > $c_min AND X < $c_max LIMIT 1;
последнее оказывается даже быстрее..

-- добавить колонку XX, делящую все точки на некоторое кол-во кусков, сделать тройной индекс (SeriesID, XX, X), делать $count запросов на одну точку, в каждом указывать уже посчитанный номер куска.

спасибо
...
Рейтинг: 0 / 0
05.06.2006, 14:42
    #33772423
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
уверен что эту задачу логично решать при помощи РСУБД а не клиента?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
05.06.2006, 15:59
    #33772681
DMart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента?

ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро..
...
Рейтинг: 0 / 0
05.06.2006, 16:09
    #33772716
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
DMart Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента?

ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро..
что это требует знает хороший математик или algolist_ru, причём ему никак не потребуется для этого SQL Server и SQL язык. IMHO
...
Рейтинг: 0 / 0
05.06.2006, 16:20
    #33772757
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
DMart Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента?

ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро..
- если это пространственная кривая, то это все точки в одно поле-запись BLOB.
- на клиенте распаковать в класс "Кривая", который по формуле или ещё как может решить для Вас геометрическую задачу.
Например, в OS есть DLL GLU, которая успешно определяет пересечение полигонов, но никому в голову не приходит озадачить этим сервер (хотя SQL 3 не за горами).
...
Рейтинг: 0 / 0
05.06.2006, 19:40
    #33773337
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
DMartРавномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо.
а почему это нехорошо?
точки по оси X как распределены в каждой кривой?
...
Рейтинг: 0 / 0
05.06.2006, 20:37
    #33773414
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
miksoftточки по оси X как распределены в каждой кривой?

довольно пустой вопрос, если не спрашивать какой функцией описана кривая...
...
Рейтинг: 0 / 0
05.06.2006, 20:50
    #33773436
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
proposed amendment miksoftточки по оси X как распределены в каждой кривой?

довольно пустой вопрос, если не спрашивать какой функцией описана кривая...не факт, что эта функция известна. Подозреваю, что это результаты каких-то измерений.
К сожалению, автор темы ничего не рассказал о природе своих данных, поэтому двигаться приходится практически вслепую.
...
Рейтинг: 0 / 0
05.06.2006, 21:18
    #33773474
быстро выбрать N равномерно распределённых по интервалу точек
DMart
Равномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо.


"Равномерно распределенных" строго говоря, означает только одно - функцию равномерного распределения.
...
Рейтинг: 0 / 0
05.06.2006, 22:15
    #33773561
proposed amendment
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
Гocть, скушал костьстрого говоря

пересечения множества точек кривой с множеством точек окружности заданного радиуса проведенной из одной из точек на этой кривой

и т.д.

ИМХО
...
Рейтинг: 0 / 0
06.06.2006, 10:28
    #33773966
gardenman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
Эта задача решается в DB2 с помощью INDEX EXTENSION. Даже пример такой есть в документации.
...
Рейтинг: 0 / 0
06.06.2006, 17:57
    #33775825
DMart
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
miksoft proposed amendment miksoftточки по оси X как распределены в каждой кривой?

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

да, это результаты измерений, Х - время.
...
Рейтинг: 0 / 0
06.06.2006, 19:06
    #33775990
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
быстро выбрать N равномерно распределённых по интервалу точек
если DMartда, это результаты измерений, Х - время., то miksoft DMartРавномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо.
а почему это нехорошо?
точки по оси X как распределены в каждой кривой?
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / быстро выбрать N равномерно распределённых по интервалу точек / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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