|
|
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
Добрый день, используется 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 запросов на одну точку, в каждом указывать уже посчитанный номер куска. спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 14:30 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
уверен что эту задачу логично решать при помощи РСУБД а не клиента? ______________________________________________ Вы имеете право хранить молчание! Всё что Вы скажете может быть использовано против Вас в суде! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 14:42 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента? ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 15:59 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
DMart Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента? ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро.. что это требует знает хороший математик или algolist_ru, причём ему никак не потребуется для этого SQL Server и SQL язык. IMHO ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 16:09 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
DMart Petro123уверен что эту задачу логично решать при помощи РСУБД а не клиента? ну такая идея была тоже. но это требует селекта с упорядочиванием по X всех точек и выделением нужного интервала, что тоже вроде не сильно быстро.. - если это пространственная кривая, то это все точки в одно поле-запись BLOB. - на клиенте распаковать в класс "Кривая", который по формуле или ещё как может решить для Вас геометрическую задачу. Например, в OS есть DLL GLU, которая успешно определяет пересечение полигонов, но никому в голову не приходит озадачить этим сервер (хотя SQL 3 не за горами). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 16:20 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
DMartРавномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо. а почему это нехорошо? точки по оси X как распределены в каждой кривой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 19:40 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
miksoftточки по оси X как распределены в каждой кривой? довольно пустой вопрос, если не спрашивать какой функцией описана кривая... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 20:37 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
proposed amendment miksoftточки по оси X как распределены в каждой кривой? довольно пустой вопрос, если не спрашивать какой функцией описана кривая...не факт, что эта функция известна. Подозреваю, что это результаты каких-то измерений. К сожалению, автор темы ничего не рассказал о природе своих данных, поэтому двигаться приходится практически вслепую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 20:50 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
DMart Равномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо. "Равномерно распределенных" строго говоря, означает только одно - функцию равномерного распределения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 21:18 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
Гocть, скушал костьстрого говоря пересечения множества точек кривой с множеством точек окружности заданного радиуса проведенной из одной из точек на этой кривой и т.д. ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.06.2006, 22:15 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
Эта задача решается в DB2 с помощью INDEX EXTENSION. Даже пример такой есть в документации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 10:28 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
miksoft proposed amendment miksoftточки по оси X как распределены в каждой кривой? довольно пустой вопрос, если не спрашивать какой функцией описана кривая...не факт, что эта функция известна. Подозреваю, что это результаты каких-то измерений. К сожалению, автор темы ничего не рассказал о природе своих данных, поэтому двигаться приходится практически вслепую. да, это результаты измерений, Х - время. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 17:57 |
|
||
|
быстро выбрать N равномерно распределённых по интервалу точек
|
|||
|---|---|---|---|
|
#18+
если DMartда, это результаты измерений, Х - время., то miksoft DMartРавномерно распределёных означает , что если точек милион, то каждую тысячную выбирать, вообще говоря, не хорошо. а почему это нехорошо? точки по оси X как распределены в каждой кривой? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.06.2006, 19:06 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33773337&tid=1545218]: |
0ms |
get settings: |
6ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
141ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 400ms |

| 0 / 0 |
