Администраторы базы данных

99
Хорошее объяснение каскадного (ON DELETE / UPDATE) поведения

Я не проектирую схемы каждый день, но когда я это делаю, я пытаюсь правильно настроить / удалить каскадные обновления, чтобы упростить администрирование. Я понимаю, как работают каскады, но я никогда не могу вспомнить, какой стол какой. Например, если у меня есть две таблицы - Parentи Child- с...

98
Читает ли SQL Server всю функцию COALESCE, даже если первый аргумент не равен NULL?

Я использую функцию T-SQL, COALESCEгде первый аргумент не будет нулевым в 95% случаев, когда он запускается. Если первый аргумент NULL, второй аргумент довольно длительный процесс: SELECT COALESCE(c.FirstName ,(SELECT TOP 1 b.FirstName FROM TableA a JOIN TableB b ON .....) ) Если, например,...

97
Guid vs INT - Что лучше в качестве первичного ключа?

Я читаю вокруг причин использовать или нет Guidи int. intменьше, быстрее, легко запоминается, сохраняет хронологическую последовательность. И что касается Guid, единственное преимущество, которое я нашел, - то, что это уникально. В каком случае Guidбудет лучше, чем intи почему? Из того, что я...

96
Хранение против расчета совокупных значений

Существуют ли какие-либо руководящие принципы или практические правила для определения, когда хранить совокупные значения и когда рассчитывать их на лету? Например, предположим, у меня есть виджеты, которые пользователи могут оценивать (см. Схему ниже). Каждый раз, когда я отображаю виджет, я могу...

96
Оптимизация запросов по диапазону временных отметок (два столбца)

Я использую PostgreSQL 9.1 на Ubuntu 12.04. Мне нужно выбрать записи за определенный промежуток времени: в моей таблице time_limitsесть два timestampполя и одно integerсвойство. В моей фактической таблице есть дополнительные столбцы, которые не связаны с этим запросом. create table (...

95
Сопоставление с шаблоном LIKE, SIMILAR TO или регулярными выражениями в PostgreSQL

Мне пришлось написать простой запрос, где я иду искать имена людей, которые начинаются с B или D: SELECT s.name FROM spelers s WHERE s.name LIKE 'B%' OR s.name LIKE 'D%' ORDER BY 1 Мне было интересно, есть ли способ переписать это, чтобы стать более производительным. Так что я могу избежать orи /...

94
PostgreSQL уникальное ограничение для нескольких столбцов и значения NULL

У меня есть таблица, подобная следующей: create table my_table ( id int8 not null, id_A int8 not null, id_B int8 not null, id_C int8 null, constraint pk_my_table primary key (id), constraint u_constrainte unique (id_A, id_B, id_C) ); И я хочу (id_A, id_B, id_C)быть отличным в любой ситуации....

93
Безопасно ли удалять файлы mysql-bin?

У меня есть MM Replication в mysql, и я хочу сжать немного свободного места в коробке, удалив ненужные файлы, я наткнулся на эти mysql-binфайлы внутри. /var/db/mysql/Существуют сотни таких файлов, как mysql-bin.000123, mysql-bin.000223и т. Д. Я проверил репликацию mysql, выполнив, show master...

92
Действительно ли добавление префикса 'tbl' к именам таблиц является проблемой?

Я смотрю несколько видео с Брентом Озаром ( например, этот ), и он предлагает не ставить таблицы с префиксами ‘tbl’или ‘TBL’. В интернете я обнаружил, что некоторые блоги говорят, что это ничего не добавляет к документации, а также что «для ее прочтения требуется больше времени». Вопросы и...

91
Когда использовать TINYINT поверх INT?

В общем, я всегда использую Интс. Я знаю, что в теории это не лучшая практика, так как вы должны использовать наименьший тип данных, который будет гарантированно хранить данные. Например, лучше использовать, tinyintкогда вы знаете, что единственные данные, которые вы будете хранить, это 1, 0 или...

91
Как мне получить текущую метку времени Unix из PostgreSQL?

Метка времени Unix - это количество секунд с полуночи UTC 1 января 1970 года. Как получить правильную метку времени Unix из PostgreSQL? При сравнении с currenttimestamp.com и timestamp.1e5b.de я не получаю ожидаемое время от PostgreSQL: Это возвращает правильную метку времени: SELECT extract(epoch...

88
Это плохая практика всегда создавать транзакцию?

Это плохая практика всегда создавать транзакцию? Например, это хорошая практика, чтобы создать транзакцию только для одного SELECT? Какова стоимость создания транзакции, когда она действительно не нужна? Даже если вы используете уровень изоляции, как READ UNCOMMITTEDэто, это плохая...

88
Почему кластер RDBM не может быть таким, как NoSQL?

Одним из больших плюсов для СУБД nosql является то, что они могут легче кластеризоваться. Предположительно, с помощью NoSQL вы можете создавать сотни дешевых машин, которые хранят разные фрагменты данных и запрашивают все сразу. Мой вопрос заключается в следующем: почему реляционные СУБД не могут...

88
Получение n строк на группу

Мне часто нужно выбирать количество строк из каждой группы в наборе результатов. Например, я мог бы хотеть перечислить 'n' самые высокие или самые низкие недавние значения заказа на клиента. В более сложных случаях количество строк в списке может варьироваться в зависимости от группы (определяется...

87
Составной индекс также хорош для запросов по первому полю?

Допустим, у меня есть таблица с полями Aи B. Я делаю регулярные запросы на A+ B, поэтому я создал составной индекс на (A,B). Будут Aли полностью оптимизированы запросы только по составному индексу? Кроме того, я создал индекс A, но Postgres по-прежнему использует составной индекс только для...

83
Измерьте размер строки таблицы PostgreSQL

У меня есть таблица PostgreSQL. select *очень медленно, в то время select idкак приятно и быстро. Я думаю, что это может быть из-за того, что размер строки очень велик, и для транспортировки требуется время, или это может быть какой-то другой фактор. Мне нужны все поля (или почти все), поэтому...

83
Предотвращают ли хранимые процедуры SQL-инъекцию?

Правда ли, что хранимые процедуры предотвращают атаки SQL-инъекций на базы данных PostgreSQL? Я провел небольшое исследование и выяснил, что SQL Server, Oracle и MySQL не защищены от внедрения SQL, даже если мы используем только хранимые процедуры. Однако эта проблема не существует в PostgreSQL....