delover
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Автоинкремент конечно ключевое понятие, и проблемм с автоинкрементом нет ни в FIB-ах ни в стандартных IB нет их даже в Вижуал Студио+FB, тоже мне надо было. Однако матчасть по этому явлению родила много чего в чём легко заблудится. Например 3 автоинкремента на одну таблицу - зачем это может понадобиться? Простите ламера - имхо. Второе - если автоинкремент работает стабильно, те как положено, то это поле уникальное в принципе, даже для Int32 инкремента - это 4 миллиарда записей. (В FB базе с двумя таблицами по 3 миллиона уже сложно работать - ждёшь по 3 минуты так как все процедуры делает сервер и техподдержка - дело не в ФБ а в практике). Так вот почему автоинкрементное поле не индексируется изначально? Ну и теперь запретная тема - индексы. Написав свою БД с индексами просто уже стало очевидно, что SQL - это язык запросов... ) Пользуватели пишут очень сложный математический SQL запрос который работает медленно потому что сервер вынужден делать за программиста предположения об использовании индекса. Масса примеров когда сервер неспособен вычленить из SQL запроса обязательное условие - мастер детейл, который сократит операцию по времени в 100 раз. В интербейзе 2 способа - писать OrderBy или Plan, но оба способа совершенно не подходят. OrderBy - теряет реальную последовательность, Plan - не вычленяет главного условия как мастер-детейл. Так что тут либо пользователи ущербны - либо SQL как язык запросов, не обеспечивающий требуемого быстродействия. В общем Автоинкремент оброс массой ненужного и не приобрёл полезного. В моей демонстрашке 3 миллиона записей по мастер детейлу фильтруются за одну миллисекунду примерно - глаз не замечает. При этом стандартный фильтр от Delphi делает это примерно минуту. Так что и выводы об необходимости первичного индекса в SQL запросе я уже сделал. Добавлено: Я бы расширил SQL язык просто из тех принципов что слова Master-Detail поймёт даже тех поддержка не умеющая писать план индексов. Даже из того что Мастер детайл это заведомо небольшое количество записей в считанные миллисикунды. И даже из того принципа что это заведомо экономит электроэнергию. Стандарт SQL не ставит похоже экономию электроэнергии, пока не ставит, на должное место. | Всего записей: 1395 | Зарегистр. 25-06-2007 | Отправлено: 15:51 09-05-2012 | Исправлено: delover, 16:08 09-05-2012 |
|