2015-07-21 3 views
3

Какая операция стоит дороже - выдача запроса SELECT до INSERT или обработка исключения во время операции INSERT?Должен ли я проверить, существует ли ключ перед вставкой или обработкой исключения при вставке?

Например, предположим, что я хочу, чтобы сохраняться некоторые параметры запроса пользователя сказать param1 (первичный ключ & уникальный индекс), param2, param3 к таблице базы данных с требованием, чтобы отобразить уведомление, если дубликат ключа уже существует. Кроме того, предположим, что это сценарий реального времени, когда весь процесс не ожидается более 500 мс.

Почему часто рекомендуется выполнять инструкцию insert для трех параметров, а затем обрабатывать исключение вставки для дублирования? Я знаю, что исключение для броска имеет стоимость - превышает ли стоимость запроса к базе данных запрос на выброс исключения?

+0

Вы могли бы сделать этот вопрос намного понятнее с примерами кода A и B. Даже после пересмотра я не могу представить в коде то, что вы пытаетесь описать. Что означает «сохранение параметров базы данных»? Вставить их в таблицу? –

+0

Почему бы вам не обойтись? Предотвращение исключений, когда это возможно, и обработка исключений, когда они возможны, являются хорошей практикой. – overslacked

+0

Как часто вы пытаетесь вставить дубликат? Правильно ли индексируются таблицы? – shawnt00

ответ

-1

Если я вставляю 1 000 000 раз и сначала проверяю, а затем вставляю, то есть 1,000,000 проверок и скажем, 957 512 мест в целом для 1,957,512 действий против базы данных. Я все равно должен что-то сделать для обмена сообщениями пользователя по каждой из 42 488 записей, которые не могут выполнить проверку.

Если я вставляю и выдаю исключение, у меня есть 1 000 000 действий против базы данных и 42 488 исключений для обработки.

Итак, первый способ ведения бизнеса - это гораздо больше работать с базой данных onteh.

+0

Я проигнорировал это, потому что без каких-либо показателей относительно эффективного времени, затрачиваемого на обнаружение повторяющихся первичных ключей и исключений обработки, я не думаю, что этот ответ полезен. Я сильно ожидаю, что обнаружение дубликатов будет намного более результативным, так как это использует систему баз данных, поскольку она была разработана для использования, а обработка исключений, как известно, дороговата. – overslacked

+0

@HLGEM Я согласен с переполнением. Как сравнивается производительность? –

Смежные вопросы