Давно хотел вербализовать эту идею, да всё случая не было.
Нас спрашивают: "откуда возник ритуал, запрещающий ставить пустые бутылки на стол?".
Мы отвечаем. Это сродни индексированию в реляционных базах данных, где значения NULL не включаются в индекс по этим значениям. То есть, выборка "table.field = some_value" может использовать этот индекс (так как условие является всегда ложным, если some_value это NULL). Иногда даже специально делают индексы по избранным строкам, делая индекс по функции, принимающей значение NULL на неинтересных строках. Был обрадован, когда узнал, что в постгресе это не нужно, и у индекса есть своя where-часть.
Так вот, когда человек думает "винца, что ли, наебнуть?", он кагбэ выполняет " select * from table where bottle_contents='wine' " (заметьте ещё одну параллель -- table и там, и тут).
Ну и вот скажите, не проще ли заранее убрать из выборки те бутылки, в которых bottle_contents явно не удовлетворит никакому разумному выбору? Проводя нехитрый изоморфизм, наливать из бутылки не захочется только в том случае, если её bottle_contents равно NULL.
Потому и убирают из индекса.
Так-то!
У меня была необходимость разобрать записи, получаемые от реляционки (от постгреса в моём случае), в окамле, который строго типизирован.
Read more... )

Profile

gdsfh

August 2013

S M T W T F S
    123
45678910
111213 14151617
18192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 23rd, 2017 04:54 pm
Powered by Dreamwidth Studios