powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / null не индексируется при построении индекса
30 сообщений из 30, показаны все 2 страниц
null не индексируется при построении индекса
    #37820367
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Во всех СУБД значение null не индексируется при построении индекса по этому полю и почему вообще так происходит?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820376
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820378
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Реализация может быть такова, что null и не хранится в таблице вовсе, просто поднят флаг (1 бит) в служебном поле. Т.о. индексировать просто нечего - нет значения (и в смысле, что сам по себе null - отсутствие значния, и в том смысле, что значения для null натурально нет в БД).
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820381
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
arniРеализация может быть такова, что null и не хранится в таблице вовсе, просто поднят флаг (1 бит) в служебном поле. Т.о. индексировать просто нечего - нет значения (и в смысле, что сам по себе null - отсутствие значния, и в том смысле, что значения для null натурально нет в БД).Это не препятствие для индексации NULL-ов.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820389
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А когда null не индексируется это всегда приводит к table full scan для запросов с предикатом вида WHERE field is null ?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820394
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeА когда null не индексируется это всегда приводит к table full scan для запросов с
предикатом вида WHERE field is null ?

А ты знаешь какой-то другой способ достать нужные записи из таблицы при отсутствии индекса?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820397
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovlooklikeА когда null не индексируется это всегда приводит к table full scan для запросов с
предикатом вида WHERE field is null ?

А ты знаешь какой-то другой способ достать нужные записи из таблицы при отсутствии индекса?

А в чем смысл тогда не индексировать null?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820399
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeА в чем смысл тогда не индексировать null?
Спроси в разделе той СУБД, которая его не индексирует. Если найдёшь такую.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820405
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftНет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин.
А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820419
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikemiksoftНет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин.
А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null?Например, Оракл не индексирует NULL если индекс состоит из одной колонки.
А в многоколоночных индексах не индексирует только те записи, где все поля индекса IS NULL.
Т.е. если одно из полей многоколоночного индекса NOT NULL, то все NULL-ы в остальных полях этого индекса будут проиндексированы.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820444
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftlooklikeпропущено...

А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null?Например, Оракл не индексирует NULL если индекс состоит из одной колонки.
А в многоколоночных индексах не индексирует только те записи, где все поля индекса IS NULL.
Т.е. если одно из полей многоколоночного индекса NOT NULL, то все NULL-ы в остальных полях этого индекса будут проиндексированы.
А какой смысл не индексировать именно null?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820455
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeА какой смысл не индексировать именно null?

А как должно выглядеть значение индексного ключа для NULL?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820458
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovlooklikeА какой смысл не индексировать именно null?

А как должно выглядеть значение индексного ключа для NULL?

Я уверен что ни я ни вы не знаете как выглядят 99% вещей внутри Oracle, так же уверен что они могли решить и эту задачу, а в-третьих miksoft... СУБД NULL может индексироваться или нет, в зависимости от каких-то причин.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820464
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeЯ уверен что ни я ни вы не знаете как выглядят 99% вещей внутри Oracle

И чо? От этого индексные ключи перестают быть индексными ключами?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820575
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Во всех СУБД значение *null *не индексируется при построении индекса по этому
> полю и почему вообще так происходит?

Если не ошибаюсь, так поступает Оракл. Но -- только он один кажется.
Т.е. это скорее исключение из правила, чем правило.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820580
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> А когда null не индексируется это всегда приводит к table full scan для запросов
> с предикатом вида *WHERE field is null* ?

Ну, могут быть какие-то другие условия в запросе ещё, тогда они могут
дать не table scan.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820583
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 05/31/2012 10:23 PM, looklike wrote:

> А какой смысл не индексировать именно null?

a == NULL ==> unknown => false.
a != NULL ==> unknown => false
NULL == NULL ==> unknown => false

Вот эта логика у них работает уже на уровне структуры индекса, и всё.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820596
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZivOn 05/31/2012 10:23 PM, looklike wrote:

> А какой смысл не индексировать именно null?

a == NULL ==> unknown => false.
a != NULL ==> unknown => false
NULL == NULL ==> unknown => false

Вот эта логика у них работает уже на уровне структуры индекса, и всё.

Эм, но ведь
a IS NULL ==> known

или специально для этого и создана отдельный предикат IS NULL, который не использует индексы?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820615
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> или специально для этого и создана отдельный предикат IS NULL, который не
> использует индексы?

Ну он не везде неиспользует индексы.
Ну не знаю я, что еэто ораклам вперлось так не добавлять NULL в индексы
Ну, может думали статистику индекса не портить. Может ещё какие-то
особенности реализации.

Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820620
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Кстати, а кто знает в MS SQL, Firebird, PostgreSQL и MySQL индексируется null?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820649
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On 06/01/2012 01:05 AM, looklike wrote:
> Кстати, а кто знает в

MS SQL -- да.
MySQL -- да (на самом деле зависит от движка БД, но во всех индексируется).

Firebird, PostgreSQL -- не знаю, но подозреваю, что да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820671
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird зависит от версии. В более-менее свежих - да.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37820694
locky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivOn 06/01/2012 01:05 AM, looklike wrote:
> Кстати, а кто знает в

MS SQL -- да.

Для фильтрованных индексов - можно исключить
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37821063
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovFirebird зависит от версииОн всегда индексировался.
Возможно не всегда IS NULL хватал индекс, не помню.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37821076
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovFirebird зависит от версии. В более-менее свежих - да.

А как выглядит значение индексного ключа для NULL?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37821340
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeВо всех СУБД значение null не индексируется при построении индекса по этому полю
Нет, не во всех. Скажем, только в Оракле null-ы бывают как индексированные, так и неиндексированные.

looklikeА в чем смысл тогда не индексировать null?
В том, что предикат is null обычно неселективный и индексный доступ по нему не имеет смысла. Ну а уменьшение размера индекса имеет в целом лучшее влияние на производительность, нежели хранение cписка null-ов для тех редких случаев, когда он таки пригодится (скажем для запроса select count(*) from table для таблицы без первичного ключа).

miksoftНапример, Оракл не индексирует NULL если индекс состоит из одной колонки.
"В большинстве случаев не индексирует NULL", если точнее.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37821370
looklike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
softwarermiksoftНапример, Оракл не индексирует NULL если индекс состоит из одной колонки.
"В большинстве случаев не индексирует NULL", если точнее.
Т.е. есть случае когда Oracle индексирует null даже если индекс состоит из одной колонки?
И в каких случаях это происходит?
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37821389
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
looklikeТ.е. есть случае когда Oracle индексирует null даже если индекс состоит из одной колонки?
И в каких случаях это происходит?
bitmap index
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37831161
Фотография Andron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Informix, DB2 индексируют null значения в btree индексах.
...
Рейтинг: 0 / 0
null не индексируется при построении индекса
    #37854096
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Математически - ничего не мешает реализовать индексный ключ для NULL как и для другого обычного значения.
Просто выбирается одно значение вне домена. Собственно я даже почти уверен, что если null индексируется, то это делается именно так, так как это наиболее простой и естественный путь. Вся троичная логика запросто реализуется в этом случае, индексы работают на общих основаниях.
Тонкость только в insert множества "уникальных" NULL-ов в такой уникальный индекс )))))))
...
Рейтинг: 0 / 0
30 сообщений из 30, показаны все 2 страниц
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / null не индексируется при построении индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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