|
|
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Предлагаю собирать здесь типичные вопросы от неофитов, относящиеся к: 1) написанию SQL-запросов 2) написанию PSQL-кода (как ХП, так и триггеров) 3) DDL (создание констрейнтов, индексов и проч.) 4) началам DBAйства Когда коллекция будет достаточно полной, можно будет составить по ней сборник рецептов. Сборник буду ваять сам, по мере сил. Если кто хочет подключиться - велкам, разумеется. Главными научными консультантами, ИМХО, должны быть WildSery, DS и ГР - люди, которые с ФБ знакомы гораздо больше мну. Поэтому "сверку часов" буду проводить именно с этими монстрами рока (если никто из них не против :)). (Источников Света дёргать лишний раз не хочется, у них и так полно забот). Цель простая: сделать некий контент, достойный попадания в вечно-прилепленный топик FB-раздела. И отправлять уже всех неофитов именно ТУДА, дабы не тратить на них время. Далее приведу в unsorted-виде типичные вопли нубов, про которые помню в данный момент. Дополняйте, плз. Желательно для всех вопросов, НЕ связанных с sql-выборками, давать префикс: psql = процедурный код ddl = как объявить констрейнт, следует ли добавить индекс етц. dba = DBAйство ... * таблицы "А" и "Б" соотносятся друг с другом как родительская и дочерняя. Но FK - нету. В итоге, в "Б" появились строки без родителей. Как их найти ? (т.е. запрос на left join / not exists); * как сгруппировать значения по столбцу "Х", но вытащить в итоге поле, не участвовавшее в группировке, и соответствующее какому-то max()-значению (пример: получить значение курса на самую позднюю дату из какого-то диапазона); * как преобразовать N строк столбца в кортеж из 1 строки и N полей (pivot); и обратно тоже (unpivot); * как пронумеровать строки выборки (в версиях до 2.5 включительно) * как выдернуть случайную запись * как собрать ("сцепить") значения в строку (list()); особенность отсутствия порядка слов в итоговом списке (в общем случае) * как разобрать строку на слова по заданному набору разделителей и вывести их в столбец (т.е. операция, обратная к list()) * как соединить N независимых выборок по номерам строк, причём для отсутствующих строк какой-либо выборки выводить NULL (использование курсоров; в версиях до 2.5 включительно) * засада с выборкой where x NOT in(select ... from t), когда подзапрос содержит NULL'ы * как обойти траблы,связанные с нестабильностью курсора при DML (в версиях до 2.5 включительно) * изыски на тему вывода записей в хитром порядке (сортировка вида order by iif(..., expr1, expr2) etc) * изыски на тему count( [ distnct ] ... ) + having * рекурсивные запросы (найти всех предков / потомков et al) * запросы к системным таблицам: "кто ссылается по FK на мою бедную таблицу ?!" и проч. (или просто продублировать - с разрешения kdv, ес-сно, - раздел с ibase.ru ?) * case-insensitive кириллица * max( id ) ищется медленно, хотя по ID создан ПК (ФБ не делает обратный скан по индексу, так что придется создавать descending) * строки с завершающими пробелами: как они сравниваются и как поменять правило сравнения * строки: удаление лишних ("задвоенных") пробелов * "malformed string" при выборке НЕ-латинских строк из базы (aka "нарушение мантры DS'a: чарсет коннекта должен быть равен чарсету консоли") * даты и время: особенность диалектов, как указывать при вводе (формат), арифметика, пересечение интервалов и т.п. * double precision: особенности сравнения и округления (примеры выражений со "странными результатами";вот один такой) * blob'ы, в т.ч. временные (или "от чего растёт моя бедная база ?!") * как вытащить данные из другой ФБ-базы (execute statement on EXTERNAL datasource) * (psql) в процедуре есть входной параметр a_some_id числового типа, для отбора записей по полю some_field. Он может быть передан как NULL и тогда надо отбирать записи с любыми значениями some_field. Как заставить ФБ использовать индекс еще и в этом случае ? (т.е. как обойтись без 'OR') * (psql) when-обработка исключений в begin-end блоках * (psql) почему foo не поменялась в итоге выполнения вот этого кода: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. * (psql) текст ошибки вместо кода - как получить его на сервере ? (и можно ли вообще ?) * (ddl) особенности при FK on delete cascade ( проскакивало недавно, кстати) * (ddl) особенности устанавливаемого check'a (ФБ *не* проверяет старые записи на соответствие новому правилу) * (ddl) особенности UNIQUE в сравнении с PK (допускаются NULL'ы). В составных unique-констрейнтах две записи вида {100, null} и {100, null} считаются одинаковыми, хотя в них присутствует null: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. * (dba) "Object in use и как мне с этим дальше жить..." * (dba) как найти тормозящий запрос (до 2.5 и начиная с 2.5) * (dba) как найти и отрубить того, кто ОАТ ? * (dba) как отрубить все транзакции, за исключением RO RC, длящиеся свыше NNN минут, но ничего не менявшие в базе ? * (dba) backup / restore: как быстро понять, база вообще живая или нет ? (изучаем ключик -m) * (dba) backup / restore: как ускорить выполнение ? (сказание про сервисы) * (dba) "кто сидит в моей бедной базе ? и что он сейчас делает ?" (запросы к mon$'ам) * (dba) "в течение рабочего дня внезапно наступают тормоза! Что делать ?" (для тех, кто не читает ibase.ru) ... to be continued ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 02:06:40 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Научными консультантами по чему - по вопросам нубов? :) Кстати, на некоторые вопросы я ответа не знаю, например. Если понадобятся - найду ответ, конечно, но не сталкивался. P.S. Распространенные вопросы от новичков - это FAQ, в любом его виде и оформлении. Любые сложные вопросы и различные best practice - совсем другое дело, это уже некий более фундаментальный сборник и труд (безусловно, тоже очень нужный, в т.ч. лично мне). Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 04:45:19 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Паша,тебе готовые ответы на почту слать? Сразу кстати уточнение есть - Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 05:45:13 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
GallemarПаша,тебе готовые ответы на почту слать? Давай :-) GallemarСразу кстати уточнение есть - Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 08:55:55 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
CyberMaxВозможно, имеет смысл сделать сборник Hint'n'Tricks. Что туда например может войти: FIELD + 0, FIELD1 IS DISTINCT FROM FIELD2, . Да, описание DISTINCT есть, но, мне кажется, стоит на нем заострить внимание.а ведь верно :-) Он до сих пор натуралом прёт, даже когда индексы есть. И пока не забыл: (ddl) что лучше, составные индексы или отдельно по каждому полю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 08:57:09 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Еще один вопрос попался: * этюды на тему similar to (например, проверка строки на то, что там записаны только цифры; проверка на то, что это адрес e-mail etc). * предостережения по произв-сти similar to (это я уже по своим печалькам буду говорить :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 09:10:12 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Может я излишне скептик, но многие вопросы звучат так: * (dba) "У меня ничего не работает! Что делать ?" (для тех, кто не читатель) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 09:55:44 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Давайте так: топик открыт для всех, в нем можно обсудить некую проблему, потом она оформляется в виде "вопрос+ответ под спойлером", когда общественность решила, что вопрос интересный и ответ правильный, я загоняю этот вопрос-ответ в стартовый пост и обсуждение этого вопроса в данном топике отправляется в утиль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:29:57 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Ivan_Pisarevsky, Идея хорошая. Я - за. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:32:20 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyДавайте так: топик открыт для всех, в нем можно обсудить некую проблему, потом она оформляется в виде "вопрос+ответ под спойлером", когда общественность решила, что вопрос интересный и ответ правильный, я загоняю этот вопрос-ответ в стартовый пост и обсуждение этого вопроса в данном топике отправляется в утиль.Хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 13:40:59 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
... "продолжаем разговор" (С). * (ddl) "как мне обеспечить уникальность в столбце Х" (для тех, кто думает, что это делается триггерами :)) * (ddl) как обеспечить соблюдение правила, выходящего за пределы одного кортежа таблицы (например, чтобы общее число строк с some_field = :some_value было или ноль, или пять - и только эти два значения) * как наращивать счетчик без дырок (или с минимальным их кол-вом) - счета-фактуры и прочая пурга от бух-ов * как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий) * как в(ы)ключить сразу все триггера (кроме системных, ес-сно) * как пересчитать статистику по всем индексам * чем плохо отсутствие свежесобранной статистики по индексам (примеры) * (dba) чем плохо невнимание к параметрам DefaultDBCachePages и TempCacheLimit (примеры) * "разве может выборка из таблицы вернуть строки не так, как показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK) . . . to be continued . . . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 16:53:50 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
> * (ddl) "как мне обеспечить уникальность в столбце Х" > (для тех, кто думает, что это делается триггерами :)) Это о чём речь? О том, что надо создавать индексы, потому что триггеры транзакционны? Ну так уникальность на триггерах итак мало кто рожает, тем более из новичков. > * (ddl) как обеспечить соблюдение правила, выходящего > за пределы одного кортежа таблицы (например, чтобы > общее число строк с some_field = :some_value было или > ноль, или пять - и только эти два значения) Не будучи редактором, настаивать не буду, но я против таких вопросов а FAQe - и этого конкретно и ему подобных. > * как наращивать счетчик без дырок > * как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий) + > * как в(ы)ключить сразу все триггера (кроме системных, ес-сно) > * как пересчитать статистику по всем индексам По идее это в раздел ddl/запросы к систаблицам/дба. Это в тему того, что нужно сначала структуру продумать. > * чем плохо отсутствие свежесобранной статистики по индексам (примеры) Тоже против. Это статья, а не FAQ и она есть у Димы, насколько я помню. Впрочем, если не писать много текста, а просто в двух словах и дать ссылку - можно. > * "разве может выборка из таблицы вернуть строки не так, как > показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK) Во-первых, против. Во-вторых, это чепуха, потому что это не так. Хвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:01:46 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамХвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит? В курсе. С самого начала по дефолту по ПК сортирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:06:37 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамО том, что надо создавать индексы, потому что триггеры транзакционны?Да.Гаджимурадов Рустамуникальность на триггерах итак мало кто рожает, тем более из новичков. Хе-хе-хе... не поверишь, но речь НЕ о новичках. В одной ERP-системе, которую мы шесть лет взад приобрели и начали переделывать, уникальность обеспечивалась... триггерами. Потому что там изначально была заложена EAV, и как обеспечить уникальность одной группы записей, но не трогать ("уникальностью") другую - разрабы этой системы, видимо, не допёрли :-) Гаджимурадов Рустам> * (ddl) как обеспечить соблюдение правила, выходящего > за пределы одного кортежа таблицы (например, чтобы > общее число строк с some_field = :some_value было или > ноль, или пять - и только эти два значения) Не будучи редактором, настаивать не буду, но я против таких вопросов а FAQe - и этого конкретно и ему подобных.Why ? слишком сложно будет осилить нубам ? Гаджимурадов Рустам> * как наращивать счетчик без дырок > * как найти дырки в нумерации (прислал в мыло miwaonline, дублирую сюда на всякий) + > * как в(ы)ключить сразу все триггера (кроме системных, ес-сно) > * как пересчитать статистику по всем индексам По идее это в раздел ddl/запросы к систаблицам/дба. Это в тему того, что нужно сначала структуру продумать.Вопросы про дырки возникают регулярно. Как систему не продумывай, всё равно что-то останется невыясненным вплоть до ввода в эксплуатацию. А там уже придется с этими дырками жить. Вопросы про систаблицы - они и на самой продуманной структуре будут возникать, это не связано, КМК. Гаджимурадов Рустам> * чем плохо отсутствие свежесобранной статистики по индексам (примеры) Тоже против. Это статья, а не FAQ и она есть у Димы, насколько я помню. Впрочем, если не писать много текста, а просто в двух словах и дать ссылку - можно.Согласен, ссылку только нужно. Гаджимурадов Рустам> * "разве может выборка из таблицы вернуть строки не так, как > показываает ИБЭ ?" (а он по дефолту показывает упорядоченными по PK) Во-первых, против. Во-вторых, это чепуха, потому что это не так. Хвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?Пардон, я наврал тут. ИБЭ выводит именно так, как записи в базе лежат (проверил только что). Так что отбой по этому вопросу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:22:30 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
IBExpertГаджимурадов РустамХвастунов в курсе, что у него ИБЕ якобы по PK без просьбы сортит?В курсе. С самого начала по дефолту по ПК сортирует.А тогда я теперь "НЕ в курсе"! В где сейчас эта настройка сидит ? Глаза устал пялить, найти не смог. А по тексту найти в этизх окнах опций ничего нельзя - ты бы сделал, как в TOAD'e, там можно текст вводить и она сама на нужную настройку показывает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:23:56 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
IBExpert> В курсе. С самого начала по дефолту по ПК сортирует. Ты про "Данные" таблицы или про что? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:29:38 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Таблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках. Стало быть, в FAQ этому не место, наверное? > Why ? слишком сложно будет осилить нубам ? Да, в т.ч. Сложно и редко нужно. > Вопросы про дырки возникают регулярно. Про дырки я плюсанулся, т.е. поддерживаю. А про структуру - имелось в виду структуру FAQ, а не БД - разделы, подразделы и т.д. Как минимум, ddl, запросы к систаблицам и dba - сильно пересекающиеся разделы. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:34:41 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
IBExpertВ курсе. С самого начала по дефолту по ПК сортирует.нарыл я, в где это сидит. Возможно, у мну дефолт этот сбит дано, ХЗ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:36:23 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТаблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках. Стало быть, в FAQ этому не место, наверное?ладно, отложу на десерт :-) подожду, пока очередной неофит(?) выпрыгнет сюда с этим. Гаджимурадов Рустам> Why ? слишком сложно будет осилить нубам ? Да, в т.ч. Сложно и редко нужно.ОК. Вычеркиваем. Гаджимурадов РустамА про структуру - имелось в виду структуру FAQ, а не БД - разделы, подразделы и т.д. Как минимум, ddl, запросы к систаблицам и dba - сильно пересекающиеся разделы.Укрупнять разделы не хочется. Винегрет ведь будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:38:56 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Таблоиднарыл я, в где это сидит.Гм... Конкретизировать надо про "показываает ИБЭ". Кто ж данные так смотрит-то? Я в SQL-эдиторе всегда нужные данные вытаскиваю и смотрю, а когда нужно чего найти/подправить - так всё равно сортируешь и фильтруешь данные так, как тебе надо, а не по PK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:44:24 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамТаблоиднарыл я, в где это сидит.Гм... Конкретизировать надо про "показываает ИБЭ". Кто ж данные так смотрит-то? Я в SQL-эдиторе всегда нужные данные вытаскиваю и смотрюну так у тебя ВКЛючена эта галка или нет ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:47:19 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
ТаблоидГаджимурадов РустамТаблоид> Хе-хе-хе... не поверишь, но речь НЕ о новичках. Стало быть, в FAQ этому не место, наверное?ладно, отложу на десерт :-) подожду, пока очередной неофит(?) выпрыгнет сюда с этим.Скорее, надо бы что-то про EAV-схему наваять. О тех бесчисленных муках и страданиях, которые она вызывает в реальной эксплуатации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:52:21 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Таблоид> ну так у тебя ВКЛючена эта галка или нет ? Понятия не имею, до сегодняшнего дня я не знал о её существовании (не замечал или не помнил), ибо не пользуюсь это вкладкой для "чтения". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:56:02 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Таблоид> Скорее, надо бы что-то про EAV-схему наваять. Про это статьи не хватит, не то что FAQ. Так что даже пытаться не стоит, ИМХО. > О тех бесчисленных муках и страданиях, которые > она вызывает в реальной эксплуатации. Зависит от... Есть и те, кто успешно пользуются и не жалуются, в т.ч. отечественный её "автор". Лично меня больше напрягают не семиэтажные запросы, а то, чтобы написать их с ходу нельзя - нужно подсматривать соотв. значения кодов. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 17:58:34 |
|
||
|
Вопросы от нубов, или список для коллекции "Советы бывалых"
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов РустамЛично меня больше напрягают не семиэтажные запросы, а то, чтобы написать их с ходу нельзя - нужно подсматривать соотв. значения кодов.Во-во! Нас это в усмерть задолбало, практически на старте. (думаешь, я просто так несколько раз вопил о мнемонических константах приложения ?.. :-)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2014, 18:06:20 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38585876&tid=1563729]: |
0ms |
get settings: |
6ms |
get forum list: |
17ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
187ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 500ms |

| 0 / 0 |
