powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / Какая DBMS поддерживает создание индексов на часть данных?
25 сообщений из 27, страница 1 из 2
Какая DBMS поддерживает создание индексов на часть данных?
    #36738007
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеется таблица со скажем 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
Какая DBMS поддерживает создание индексов на часть данных?
    #36738042
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Какая DBMS поддерживает создание индексов на часть данных?
    #36738051
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sql Server 2008 - filtered index
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738144
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oracle FBI
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738201
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan),

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

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

Если не ошибаюсь, то с версии 2.0. Это примерно 1990 год. :)
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738225
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Какая DBMS поддерживает создание индексов на часть данных?
    #36738254
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738272
Anddros
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
foxpro
Код: plaintext
1.
select strange_table
index on field1 tag strange_table_i01 for field0 =  0 
Если ничего не напутал в синтаксисе. Давно это было... :)
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738783
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mikron wrote:

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

Вроде бы как в PostgreSQL такое есть. Больше не слыхал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36738902
ОКТОГЕН
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZiv,
ага
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36739174
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
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
Какая DBMS поддерживает создание индексов на часть данных?
    #36739189
Фотография Apex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Le Peacemikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
И толку от этого для вышеприведенных запросов - ноль.
Аналогом такого для данной задачи в Оракле будет только MV.
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36739262
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Apex
Аналогом такого для данной задачи в Оракле будет только MV.

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

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

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

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

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

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

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

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

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

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

ApexLe Peacemikron
Покажи пожалуста, как это делается с FBI.
case when field0 = 0 then field1 else null end
И толку от этого для вышеприведенных запросов - ноль.
Аналогом такого для данной задачи в Оракле будет только MV.
Отсюда и пошел весь дальнейший разговор про мат.вью.
...
Рейтинг: 0 / 0
Какая DBMS поддерживает создание индексов на часть данных?
    #36745295
Фотография Ggg_old
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На 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
Какая DBMS поддерживает создание индексов на часть данных?
    #36745338
mikron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ggg_oldНа SA10 нашел, что есть поддержка function based индекса. Который по сути делает вычисляемую колонку в таблице и строит по ней индекс. Т.е. вы получаете возможность сделать такой себе бинарный индекс.

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

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


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