Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая DBMS поддерживает создание индексов на часть данных? / 25 сообщений из 27, страница 1 из 2
13.07.2010, 12:50
    #36738007
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Имеется таблица со скажем 1Мио рекордс,
и на ету таблицу иногда проиходят запросы вида

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Oracle: 
select * from (select * from strange_table where field0=0 order by field1) s
where rownum < 100;

MS/SA

select top 100 * 
from strange_table where field0=0 order by field1
;


Хочется индекса для оптимизации выборки,
но только для выборочных данных, которые удовлетворяют заранее уаказанному условию. strange_table.field0=0
т.е. Индекс для данных, не удовлетворяющих условию, смысла не имеет.

Интересует, кто и как хорошо поддерживает такие странности
...
Рейтинг: 0 / 0
13.07.2010, 12:57
    #36738042
Мимопроходящий
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Hello, mikron!
You wrote on Tue, 13 Jul 10 09:50:47 GMT:

mikron m> Интересует, кто и как хорошо поддерживает такие странностисовременная психиатрия.
АднАзнАчнА!

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.07.2010, 12:59
    #36738051
locky
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Sql Server 2008 - filtered index
...
Рейтинг: 0 / 0
13.07.2010, 13:24
    #36738144
Gluk (Kazan)
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Oracle FBI
...
Рейтинг: 0 / 0
13.07.2010, 13:39
    #36738201
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Gluk (Kazan),

Ищется аналог вот такому
Код: plaintext
1.
create index strange_table_i01 on strange_table(field1) where field0 = 0;
Мне на ум только мат. представления приходят, но ето не совсем то, что надо.

Покажи пожалуста, как это делается с FBI.
...
Рейтинг: 0 / 0
13.07.2010, 13:43
    #36738220
Anddros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
FoxPro

Если не ошибаюсь, то с версии 2.0. Это примерно 1990 год. :)
...
Рейтинг: 0 / 0
13.07.2010, 13:44
    #36738225
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
mikronGluk (Kazan),

Ищется аналог вот такому
Код: plaintext
1.
create index strange_table_i01 on strange_table(field1) where field0 = 0;
Мне на ум только мат. представления приходят, но ето не совсем то, что надо.

Покажи пожалуста, как это делается с FBI.

Ну, практически так в MS SQL^

Код: plaintext
1.
2.
CREATE NONCLUSTERED INDEX "FIBillOfMaterialsWithEndDate"
    ON Production.BillOfMaterials (ComponentID, StartDate)
    WHERE EndDate IS NOT NULL;
...
Рейтинг: 0 / 0
13.07.2010, 13:49
    #36738254
Le Peace
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
mikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
...
Рейтинг: 0 / 0
13.07.2010, 13:52
    #36738272
Anddros
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
foxpro
Код: plaintext
1.
select strange_table
index on field1 tag strange_table_i01 for field0 =  0 
Если ничего не напутал в синтаксисе. Давно это было... :)
...
Рейтинг: 0 / 0
13.07.2010, 16:07
    #36738783
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
mikron wrote:

> Интересует, кто и как хорошо поддерживает такие странности

Вроде бы как в PostgreSQL такое есть. Больше не слыхал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.07.2010, 16:45
    #36738902
ОКТОГЕН
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
MasterZiv,
ага
...
Рейтинг: 0 / 0
13.07.2010, 18:12
    #36739174
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Мимопроходящий
Hello, mikron!
You wrote on Tue, 13 Jul 10 09:50:47 GMT:

mikron m> Интересует, кто и как хорошо поддерживает такие странностисовременная психиатрия.
АднАзнАчнА!

--
With best regards, Мимопроходящий.


Не нужно судить о людях по себе, а обо всех СУБД по FireBird. Спасибо.

В сабж: Терадата поддерживает такие индексы, называется Sparse Join Index
Код: plaintext
1.
2.
3.
4.
CREATE JOIN INDEX j1 AS
SELECT storeid, deptid, SUM(sales_dollars) AS sum_sd
FROM sales
WHERE EXTRACT(year FROM sales_date) =  2000 
GROUP BY storeid, deptid;
...
Рейтинг: 0 / 0
13.07.2010, 18:19
    #36739189
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Le Peacemikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
И толку от этого для вышеприведенных запросов - ноль.
Аналогом такого для данной задачи в Оракле будет только MV.
...
Рейтинг: 0 / 0
13.07.2010, 19:05
    #36739262
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Apex
Аналогом такого для данной задачи в Оракле будет только MV.

View - понятно, а материализовать-то его зачем?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
13.07.2010, 19:53
    #36739305
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Dimitry Sibiryakov
Apex
Аналогом такого для данной задачи в Оракле будет только MV.

View - понятно, а материализовать-то его зачем?

Вы что, правда не понимаете?
...
Рейтинг: 0 / 0
13.07.2010, 19:58
    #36739308
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Dimitry Sibiryakov
Apex
Аналогом такого для данной задачи в Оракле будет только MV.

View - понятно, а материализовать-то его зачем?
Чтобы поиск был быстрее. Например, поиск с предикатом IS NOT NULL или по полю в котором всего два значение. Обычные индексы здесь пасуют.
...
Рейтинг: 0 / 0
16.07.2010, 12:37
    #36744922
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Senya_LDimitry Sibiryakov
Apex
Аналогом такого для данной задачи в Оракле будет только MV.

View - понятно, а материализовать-то его зачем?
Чтобы поиск был быстрее. Например, поиск с предикатом IS NOT NULL или по полю в котором всего два значение. Обычные индексы здесь пасуют.
Нет, не для этого. И то, что вы сейчас написали про индексы - не совсем верно, т.к. в определенных ситуациях в Оракле специально под предикат IS NOT NULL создают индекс, который очень эффективен (помним, что Оракл не хранит Null индексе), а для полей с низкой селекивностью существуют Bitmap индексы, которые в определенных ситуациях очень эффективны.
MV здесь, для того, чтобы Query Rewrite сработал. От простого View здесь как раз никакого толку, и что там было понятно уважаемому специалисту по одной единственной СУБД - уже непонятно мне. Я вот просто View ну вообще никак к этой задаче не могу приткнуть.
...
Рейтинг: 0 / 0
16.07.2010, 12:59
    #36744982
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Apex
Я вот просто View ну вообще никак к этой задаче не могу приткнуть.

View с union all двух таблиц внутри. На одной нужный индекс есть, на
другой нет. Какой смысл в его материализации?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
16.07.2010, 13:47
    #36745076
Senya_L
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
ApexИ то, что вы сейчас написали про индексы - не совсем верно, т.к. в определенных ситуациях в Оракле специально...Сдается мне, что равенство
Код: plaintext
Оракл == СУБД
ни фига не является коммутативным ;)))

Лично я использовал материализованные вьюхи для двух целей: 1) как средство ускорения запросов в отчетной БД; 2) для ускорения поиска по булеву полю (или другого типа с заведомо низкой селективностью). Что использовал - про то и говорю.
...
Рейтинг: 0 / 0
16.07.2010, 14:10
    #36745139
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Dimitry Sibiryakov
Apex
Я вот просто View ну вообще никак к этой задаче не могу приткнуть.

View с union all двух таблиц внутри. На одной нужный индекс есть, на
другой нет. Какой смысл в его материализации?

Угу, а еще лучше сразу все приложение переписать, чтобы не было таких дурацких задач.
...
Рейтинг: 0 / 0
16.07.2010, 14:13
    #36745148
Apex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Senya_LApexИ то, что вы сейчас написали про индексы - не совсем верно, т.к. в определенных ситуациях в Оракле специально...Сдается мне, что равенство
Код: plaintext
Оракл == СУБД
ни фига не является коммутативным ;)))

Сдается мне, что вы тут все слепые или читать не умеете...

ApexLe Peacemikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
И толку от этого для вышеприведенных запросов - ноль.
Аналогом такого для данной задачи в Оракле будет только MV.
Отсюда и пошел весь дальнейший разговор про мат.вью.
...
Рейтинг: 0 / 0
16.07.2010, 15:03
    #36745295
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
На SA10 нашел, что есть поддержка function based индекса. Который по сути делает вычисляемую колонку в таблице и строит по ней индекс. Т.е. вы получаете возможность сделать такой себе бинарный индекс.
Код: plaintext
1.
2.
3.
4.
5.
6.
CREATE [ VIRTUAL ] [ UNIQUE ] [ CLUSTERED ] INDEX index-name
ON [ owner.]table-name
( column-name [ ASC | DESC ], ...
| function-name ( argument, ... ] ) AS column-name )
[ { IN | ON } dbspace-name ]
[ FOR OLAP WORKLOAD ]


function-name clause The function-name clause creates an index on a function. This clause cannot be used on declared temporary tables or materialized views.

This form of the CREATE INDEX statement is a convenience method that carries out the following operations:

-Adds a computed column named column-name to the table. The column is defined with a COMPUTE clause that is the specified function, along with any specified arguments. See the COMPUTE clause of the CREATE TABLE statement for restrictions on the type of function that can be specified. The data type of the column is based on the result type of the function.
-Populates the computed column for the existing rows in the table.
-Creates an index on the column.
...
Рейтинг: 0 / 0
16.07.2010, 15:16
    #36745338
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Ggg_oldНа SA10 нашел, что есть поддержка function based индекса. Который по сути делает вычисляемую колонку в таблице и строит по ней индекс. Т.е. вы получаете возможность сделать такой себе бинарный индекс.

Весело с вам:)
Это вообще не решение. т.е. конечно, фукциналынй индекс получили,
а первоначалную задачу забыли.

1. Доп.колонка для вычисленных значений требует место в таблице
2. вычисляется для всех знбачений
3. ничем не лутше композитного индекса по (фиелд0, фиелд1)
...
Рейтинг: 0 / 0
16.07.2010, 16:23
    #36745538
Ggg_old
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
мне кажется, что вы не туда копаете. Если вам нужен очень быстрый поиск по ключевому полю, то это обычно достигается партицированием таблицы по этому полю. А что вы хотите добиться от недоиндекса я не понимаю. Индексный поиск сам по себе значительно ускоряет поиск, для чего и предназначен.
Функциональный индекс позволит вам бинаризировать все разнообразие входных ключевых величин до двух значений (нужное поле/ненужное поле). Либо еще, (как советовали) стройте вьюху, которая будет содержать только те значения, которые необходимы.
В постановке вашей задачи не было ничего про "дополнительное пространство", да и на сегодняшний день дополнительное пространство никого не интересует, 90е годы остались далеко позади. Сам индекс, кстати тоже занимает место.
...
Рейтинг: 0 / 0
16.07.2010, 16:55
    #36745611
mikron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Какая DBMS поддерживает создание индексов на часть данных?
Ggg_oldмне кажется, что вы не туда копаете. Если вам нужен очень быстрый поиск по ключевому полю, то это обычно достигается партицированием таблицы по этому полю. А что вы хотите добиться от недоиндекса я не понимаю. Индексный поиск сам по себе значительно ускоряет поиск, для чего и предназначен.
Функциональный индекс позволит вам бинаризировать все разнообразие входных ключевых величин до двух значений (нужное поле/ненужное поле). Либо еще, (как советовали) стройте вьюху, которая будет содержать только те значения, которые необходимы.
В постановке вашей задачи не было ничего про "дополнительное пространство", да и на сегодняшний день дополнительное пространство никого не интересует, 90е годы остались далеко позади. Сам индекс, кстати тоже занимает место.
А мне кажется у вас есть большой потенциал для углубления ваших познаний.
Я не согласен, или согласен только с оговорками, с каждым вашим утверждением.
No comments.
Вобще меня интересовало какая DBMS может такие фокусы.
Названы были: PostgreSQL, MS SQL 2008, Terradata и прочие, для меня не интересные.
Как я писал в самом начале, решение с мат. представлением
для Оракл можно условно отнести к разряду допустимых. Тема исчерпана.
За сим откланиваюсь и благодарю ответивших.
...
Рейтинг: 0 / 0
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая DBMS поддерживает создание индексов на часть данных? / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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