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

используется 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
быстро выбрать N равномерно распределённых по интервалу точек
    #33772423
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уверен что эту задачу логично решать при помощи РСУБД а не клиента?
______________________________________________
Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде!
...
Рейтинг: 0 / 0
быстро выбрать N равномерно распределённых по интервалу точек
    #33772681
DMart
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента?

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

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

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

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

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


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

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

и т.д.

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

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

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


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