私の主な質問は、どちらのアプローチがより高速かということです。
ブリーフィング
Mozilla を使用してアプリケーションを開発しています。
いくつかのデータをキャプチャしてデータベースに保存するこの 1 つのモジュールがあります。データは断続的に入ってきます。重複は保存されません。議論のために、列が 1 つしかないテーブルを想定して、その列に「キーワード」という名前を付けましょう。したがって、データベースに既に存在するキーワードを取得した場合、それを再度保存することはありません。はい、この列を PRIMARY KEY として設定し、UNIQUE にしました。:)
私が持っているクエリは次のとおりです。
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 に関連していますが、一般的なコメントは大歓迎です!)
補足: SQL 。私が使用した構文は、説明のみを目的としています。SQL ステートメントを作成し、それらを実行して結果をフェッチすると想定するか、すべての汚い作業を行う JavaScript ライブラリ呼び出しであると想定するかもしれません。
この質問は、次の質問に少し似ています。
コード内の DB 制約をチェックする必要がありますか、それとも DB によってスローされた例外をキャッチする必要がありますか
しかし、私が取り組んでいるアプリケーションは可能な限り高速である必要があるため、パフォーマンスに関連する違いを具体的に理解したいと思います (どのアプリケーションがそうでないのですか? ;) )