28 октября 2011 г. 18:00 пользователь Andrei <[email protected]> написал: > 28 октября 2011 г. 15:37 пользователь Михаил Шогин <[email protected]> > написал: >>> >>> Объясните, пожалуйста, разработчикам, что null означает "отсутсвие >>> данных", только "отсутсвие данных" и ничего, кроме "отсутствия данных". >>> Разработчики, работающие с базами данных, должны понимать, что "отсутсвие >>> данных" не может быть использовано как "данные". >>> >>> В этом конкретном случае "запись недоступна" есть некоторые вполне >>> определённые данные, и для этого статуса должно быть определено полне >>> конкретное значение. >>> >> NULL - тоже значение. >> Объяснение простое, >> Поле выставляется в значение NULL для не попадания в индекс. > > Какой в этом смысл? Вероятно, для уменьшения размера индекса. И таким образом - повышения его селективности.
Лично мне, Андрей, ваша позиция понятна и я её всячески приветствую. Я не против вас. Но реалии таковы, что в некоторых случаях бывает выгодно и уместно идти на всякого рода трюки. Если ситуация оценена всесторонне и решение принималось взвешенно, а не просто потому что "в прошлом проекте делал так и там всё было классно" - то наверное, такие трюки уместны. Конечно, при наличии не только обоснования, но и внутрипроектной документации. Единственное "но" - в данном конкретнос случае я бы предпочёл пару (NULL || 1) вместо (NULL || 0), чисто из "перловских" соображений. Андрей, я буду рад, если вы предложите лучшее решение, достигающее _всех_ техже целей. >> Согласен что было бы лучше сделать так >> status - доступность сущности ( 1 - доступна , 0 - не доступна ) >> однако в таком случае пришлось бы строить индекс >> create index ENTITIES$N$STATUSACTIVE on books (n, case when status = 1 >> then 1 else null end ) >> но в таком случае, для того что бы пойти по индексу, придется использовать >> запрос вида >> select en.n >> from entities en >> where case >> when en.status = 1 >> then 1 >> else null >> end = 1 > > A почему нельзя просто WHERE en.status = 1 ? > > -- > Andrei Protasovitski > < andrei[dot]protasovitski[at]gmail[dot]com > > Diemen, Netherlands > > -- > Moscow.pm mailing list > [email protected] | http://moscow.pm.org > > -- Sincerely yours, Oleg Kostyuk (CUB-UANIC) -- Moscow.pm mailing list [email protected] | http://moscow.pm.org
