|
|
su.dbms- SU.DBMS ---------------------------------------------------------------------- From : Andrzej Novosiolov 2:5020/400 25 Jun 2001 15:04:18 To : Yury Ivashchenko Subject : Re: Многомерные матрицы -------------------------------------------------------------------------------- On Mon, 25 Jun 2001 07:21:26 +0000 (UTC), "Yury Ivashchenko" <yura@mikschorr.com.ua> wrote: > Привет всем. Как организовать хранение многомерных матриц в случае когда > количество измерений заранее неизвестно? Двумя таблицами - таблица значений и таблица индексов. Примерно так: CREATE TABLE values ( val_id INT IDENTITY PRIMARY KEY, val INT ) CREATE TABLE indexes ( ind_id INT IDENTITY PRIMARY KEY, val_id INT REFERENCES values(val_id), dimension INT, ind_val INT) И выбирать значения запросами вида (пример для 3-мерной матрицы - элемент M(5,6,7)) SELECT val FROM values, indexes i1, indexes i2, indexes i3 WHERE values.val_id=i1.val_id AND i1.dimension=1 AND i1.ind_val=5 AND i1.val_id=i2.val_id AND i2.dimension=2 AND i2.ind_val=6 AND i2.val_id=i3.val_id AND i3.dimension=3 AND i3.ind_val=7 Тормозить, разумеется, будет дико. Hаиболее очевидная оптимизация - размещать в таблице indexes не по одному индексу на запись, а группами по N (добавив поле "номер начального индекса в записи") и добавить M первых индексов в таблицу values. Предельный случай оптимизации (если заранее известен верхний предел количества измерений) - зарезервировать в таблице values достаточное количество полей под максимально возможное количество индексов и отказаться от таблицы indexes. ... 2:463/1124.5@fidonet, ICQ 8481158, http://surf.to/andrzej --- ifmail v.2.15dev5 * Origin: SoftElegance (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /su.dbms/20808786b0aa.html, оценка из 5, голосов 10
|