我的主要问题是哪种方法更快。
一些简报
我正在使用 Mozilla 开发一个应用程序。
我有一个模块,我可以在其中捕获一些数据并将其存储在数据库中。数据间歇性地进入。不存储任何重复项。为了讨论起见,我们可以假设一个表只有一列,让我们将该列命名为“关键字”。因此,如果我们得到一个已经在数据库中的关键字,我们就不会再次存储它。是的,我们已将此列设置为 PRIMARY KEY 并使其成为 UNIQUE。:)
我的查询是:
1)在我将这个新数据插入数据库之前,我应该做一个数据库调用并检查关键字是否存在;如果它不存在将其放入数据库?就像是:
function insert_keyword(keyword)
{
if(!SQL.exists(keyword))
{
SQL.insert(keyword);
}
}
或者
2)我只是插入并让数据库处理条件,有效地让它抛出一个我捕获的异常。
function insert_keyword(keyword)
{
try {
SQL.insert(keyword);
}
catch (e)
{
// keyword exists!
}
}
我知道捕获异常而不做任何事情是不好的!所以我不是在寻找什么是好的什么是坏的:)。我想了解的是哪种方法最快。(特别是与 Mozilla、JavaScript 和 SQLite 相关,但欢迎发表一般性评论!)
旁注: SQL 。我使用的语法仅用于说明目的。你可以假设我创建了 SQL 语句,执行它们并获取结果,或者假设它是一个 JavaScript 库调用,它完成了所有的脏活。
这个问题有点像这样:
我应该检查代码中的 DB 约束还是应该捕获 DB 抛出的异常
但我想具体了解与性能相关的差异,因为我正在处理的应用程序需要尽可能快(哪个应用程序不需要?;))