28 октября 2011 г. 15:02 пользователь Михаил Шогин <span dir="ltr"><<a href="mailto:mshogin@gmail.com">mshogin@gmail.com</a>></span> написал:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
У меня есть небольшой пример<div class="gmail_quote"><div>( пример связан с ORM Django, думаю что на ORM Perl также распространяется )</div><div><br></div><div>Имеем след таблицу</div><div><div>create table entities (</div>

<div> n number,</div><div> title varchar2(100),</div><div> dsc clob,</div><div> status number,</div><div> fd date</div><div>)</div></div><div><br></div><div>создаем индексы</div><div><div>create unique index ENTITIES$N on books ( n )</div>

<div>create index ENTITIES$N$STATUS on books ( n, status )</div></div><div><br></div><div>status - доступность сущности ( 0 - доступна , null - не доступна )</div></div></blockquote><div><br>Объясните, пожалуйста, разработчикам, что null означает "отсутсвие данных", только "отсутсвие данных" и ничего, кроме "отсутствия данных". Разработчики, работающие с базами данных, должны понимать, что "отсутсвие данных" не может быть использовано как "данные".<br>
<br>В этом конкретном случае "запись недоступна" есть некоторые вполне определённые данные, и для этого статуса должно быть определено полне конкретное значение.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div> выбираем идентификаторы всех доступных сущностей</div>
<div><br></div><div>SQL </div><div><div>select en.n </div><div>  from entities en</div><div>where en.status = 0</div></div><div><br></div><div>план выполнения </div><div><div><br></div><div> INDEX FAST FULL SCAN<span style="white-space:pre-wrap">    </span>INDEX ENTITIES$N$STATUS</div>

</div><div><br></div><div>ORM </div><div>entities = Entity.objects.filter( status = 0 )</div></div></blockquote><div><br>Про указание колонок уже упомянули.<br> </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div class="gmail_quote"><div>получится запрос </div><div><div><div><div>select en.* </div><div>  from entities en</div><div>where en.status = 0</div>
</div></div></div><div><br></div><div>план</div><div><div>TABLE ACCESS FULL</div></div><div><br></div><div>профит на лицо</div><div>+ ко всему прочему следует отметить что записи со status = null в индекс не попадут, так что профит еще больше чем просто "на лицо"</div>

<div><br></div><div>Также можно построить индекс в который попадут только недоступные сущности и выбирать используя этот индекс </div><br></div></blockquote></div><br clear="all"><br>-- <br>Andrei Protasovitski<br>< andrei[dot]protasovitski[at]gmail[dot]com ><br>
Diemen, Netherlands<br>