|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Во всех СУБД значение null не индексируется при построении индекса по этому полю и почему вообще так происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 19:55 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Нет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:06 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Реализация может быть такова, что null и не хранится в таблице вовсе, просто поднят флаг (1 бит) в служебном поле. Т.о. индексировать просто нечего - нет значения (и в смысле, что сам по себе null - отсутствие значния, и в том смысле, что значения для null натурально нет в БД). ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:07 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
arniРеализация может быть такова, что null и не хранится в таблице вовсе, просто поднят флаг (1 бит) в служебном поле. Т.о. индексировать просто нечего - нет значения (и в смысле, что сам по себе null - отсутствие значния, и в том смысле, что значения для null натурально нет в БД).Это не препятствие для индексации NULL-ов. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:10 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
А когда null не индексируется это всегда приводит к table full scan для запросов с предикатом вида WHERE field is null ? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:20 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeА когда null не индексируется это всегда приводит к table full scan для запросов с предикатом вида WHERE field is null ? А ты знаешь какой-то другой способ достать нужные записи из таблицы при отсутствии индекса? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:26 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovlooklikeА когда null не индексируется это всегда приводит к table full scan для запросов с предикатом вида WHERE field is null ? А ты знаешь какой-то другой способ достать нужные записи из таблицы при отсутствии индекса? А в чем смысл тогда не индексировать null? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:29 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeА в чем смысл тогда не индексировать null? Спроси в разделе той СУБД, которая его не индексирует. Если найдёшь такую. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:31 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
miksoftНет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин. А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:38 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikemiksoftНет, не во всех. И даже в одной СУБД NULL может индексироваться или нет, в зависимости от каких-то причин. А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null?Например, Оракл не индексирует NULL если индекс состоит из одной колонки. А в многоколоночных индексах не индексирует только те записи, где все поля индекса IS NULL. Т.е. если одно из полей многоколоночного индекса NOT NULL, то все NULL-ы в остальных полях этого индекса будут проиндексированы. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 20:49 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
miksoftlooklikeпропущено... А вы про какую именно СУБД и по какой причине имеет смысл там не индексировать null?Например, Оракл не индексирует NULL если индекс состоит из одной колонки. А в многоколоночных индексах не индексирует только те записи, где все поля индекса IS NULL. Т.е. если одно из полей многоколоночного индекса NOT NULL, то все NULL-ы в остальных полях этого индекса будут проиндексированы. А какой смысл не индексировать именно null? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 21:23 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeА какой смысл не индексировать именно null? А как должно выглядеть значение индексного ключа для NULL? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 21:34 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovlooklikeА какой смысл не индексировать именно null? А как должно выглядеть значение индексного ключа для NULL? Я уверен что ни я ни вы не знаете как выглядят 99% вещей внутри Oracle, так же уверен что они могли решить и эту задачу, а в-третьих miksoft... СУБД NULL может индексироваться или нет, в зависимости от каких-то причин. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 21:38 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeЯ уверен что ни я ни вы не знаете как выглядят 99% вещей внутри Oracle И чо? От этого индексные ключи перестают быть индексными ключами? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 21:40 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
> Во всех СУБД значение *null *не индексируется при построении индекса по этому > полю и почему вообще так происходит? Если не ошибаюсь, так поступает Оракл. Но -- только он один кажется. Т.е. это скорее исключение из правила, чем правило. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 23:20 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
> А когда null не индексируется это всегда приводит к table full scan для запросов > с предикатом вида *WHERE field is null* ? Ну, могут быть какие-то другие условия в запросе ещё, тогда они могут дать не table scan. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 23:22 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 23:24 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
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, который не использует индексы? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 23:39 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
> или специально для этого и создана отдельный предикат IS NULL, который не > использует индексы? Ну он не везде неиспользует индексы. Ну не знаю я, что еэто ораклам вперлось так не добавлять NULL в индексы Ну, может думали статистику индекса не портить. Может ещё какие-то особенности реализации. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
31.05.2012, 23:53 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Кстати, а кто знает в MS SQL, Firebird, PostgreSQL и MySQL индексируется null? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 00:05 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
On 06/01/2012 01:05 AM, looklike wrote: > Кстати, а кто знает в MS SQL -- да. MySQL -- да (на самом деле зависит от движка БД, но во всех индексируется). Firebird, PostgreSQL -- не знаю, но подозреваю, что да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 00:58 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Firebird зависит от версии. В более-менее свежих - да. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 01:39 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
MasterZivOn 06/01/2012 01:05 AM, looklike wrote: > Кстати, а кто знает в MS SQL -- да. Для фильтрованных индексов - можно исключить ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 02:42 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovFirebird зависит от версииОн всегда индексировался. Возможно не всегда IS NULL хватал индекс, не помню. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 11:03 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Dimitry SibiryakovFirebird зависит от версии. В более-менее свежих - да. А как выглядит значение индексного ключа для NULL? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 11:08 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeВо всех СУБД значение null не индексируется при построении индекса по этому полю Нет, не во всех. Скажем, только в Оракле null-ы бывают как индексированные, так и неиндексированные. looklikeА в чем смысл тогда не индексировать null? В том, что предикат is null обычно неселективный и индексный доступ по нему не имеет смысла. Ну а уменьшение размера индекса имеет в целом лучшее влияние на производительность, нежели хранение cписка null-ов для тех редких случаев, когда он таки пригодится (скажем для запроса select count(*) from table для таблицы без первичного ключа). miksoftНапример, Оракл не индексирует NULL если индекс состоит из одной колонки. "В большинстве случаев не индексирует NULL", если точнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 12:47 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
softwarermiksoftНапример, Оракл не индексирует NULL если индекс состоит из одной колонки. "В большинстве случаев не индексирует NULL", если точнее. Т.е. есть случае когда Oracle индексирует null даже если индекс состоит из одной колонки? И в каких случаях это происходит? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 12:58 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
looklikeТ.е. есть случае когда Oracle индексирует null даже если индекс состоит из одной колонки? И в каких случаях это происходит? bitmap index ... |
|||
:
Нравится:
Не нравится:
|
|||
01.06.2012, 13:07 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Informix, DB2 индексируют null значения в btree индексах. ... |
|||
:
Нравится:
Не нравится:
|
|||
08.06.2012, 14:24 |
|
null не индексируется при построении индекса
|
|||
---|---|---|---|
#18+
Математически - ничего не мешает реализовать индексный ключ для NULL как и для другого обычного значения. Просто выбирается одно значение вне домена. Собственно я даже почти уверен, что если null индексируется, то это делается именно так, так как это наиболее простой и естественный путь. Вся троичная логика запросто реализуется в этом случае, индексы работают на общих основаниях. Тонкость только в insert множества "уникальных" NULL-ов в такой уникальный индекс ))))))) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.06.2012, 00:21 |
|
|
start [/forum/topic.php?all=1&fid=35&tid=1552544]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
35ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
others: | 7ms |
total: | 145ms |
0 / 0 |