Мой основной вопрос: какой подход быстрее?
Некоторый брифинг
Я разрабатываю приложение, используя Mozilla.
У меня есть один модуль, где я собираю некоторые данные и сохраняю их в базе данных. Данные поступают с перерывами. Дубликаты не должны храниться. Для обсуждения мы можем предположить, что таблица содержит всего один столбец, и давайте назовем этот столбец именем «ключевое слово». Поэтому, если мы получим ключевое слово, которое уже есть в базе данных, мы не будем его снова хранить И да, мы установили этот столбец как ПЕРВИЧНЫЙ КЛЮЧ и сделали его УНИКАЛЬНЫМ. :)
У меня есть запрос:
1) Прежде чем вставлять эти новые данные в базу данных, я должен выполнить вызов БД и проверить, существует ли ключевое слово или нет; если его не существует, поместите его в БД? Что-то вроде:
function insert_keyword(keyword)
{
if(!SQL.exists(keyword))
{
SQL.insert(keyword);
}
}
OR
2) Я просто вставляю и позволяю базе данных обрабатывать условие, позволяя ей генерировать исключение, которое я ловлю.
function insert_keyword(keyword)
{
try {
SQL.insert(keyword);
}
catch (e)
{
// keyword exists!
}
}
Я знаю, ловить исключение и ничего не делать - это плохо! Поэтому я не ищу, что хорошо, а что плохо :). Я хочу понять, какой подход будет самым быстрым. (В частности, в отношении Mozilla, JavaScript и SQLite, но приветствуются общие комментарии!)
Sidenotes: Синтаксис SQL. , который я использовал, только для иллюстрации. Вы можете предположить, что я создаю операторы SQL, выполняю их и извлекаю результат, или предполагаю, что это вызов библиотеки JavaScript, который выполняет всю грязную работу.
Этот вопрос немного похож на этот:
Должен ли я проверять наличие ограничений в базе данных в коде или перехватывать исключения, генерируемые БД
Но я хочу понять различия, связанные с производительностью, так как приложение, над которым я работаю, должно быть максимально быстрым (какое приложение не?;))