我的主要问题是哪种方法更快。
一些简报
我正在使用Mozilla开发一个应用程序。
我有一个模块,可以捕获一些数据并将其存储在数据库中。这些数据是断断续续的。不应储存副本。为了便于讨论,我们可以假设一个只有一个列的表,让我们将该列命名为‘关键字’。因此,如果我们得到一个关键字,已经在数据库中,我们不会再存储它。是的,我们已经将这个列设置为主键,并使它成为唯一的。:)
我的查询是:
1)在将这些新数据插入数据库之前,是否应该执行DB调用并检查关键字是否存在;如果不存在,则将其放入DB中吗?类似于:
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,但欢迎一般性评论!)
Sidenotes:我使用的 SQL.语法只是为了说明。您可以假设我创建了SQL语句,执行它们并获取结果,或者假设它是一个JavaScript库调用,它执行所有的脏工作。
这个问题有点像这个问题:
但我想具体地理解与性能相关的差异,因为我正在开发的应用程序需要尽可能快(哪个应用程序不需要?;)
发布于 2009-04-06 08:56:17
不确定这个问题的mozilla/javascript部分的具体内容,但还有第三个选项“插入或替换”。它可以在不重复的情况下完成所需的任务,并在行已经存在的情况下消除签入代码的需要。
https://stackoverflow.com/questions/720656
复制相似问题