3

jQueryを使用したインスタント検索によって、データベース(MySQL)に大きな負荷がかかるかどうか疑問に思いました。考慮すべき要素がたくさんあることは知っていますが、議論のために、フリックするレコードが30,000個あるとしましょう。

4

4 に答える 4

4

インデックス作成

インデックス作成は役立ちますが、インデックス作成によってINSERT / UPDATE/DELETEステートメントの速度も低下します...

MySQLは、テーブルの列にインデックスを付けるために使用できるスペースの量も制限します。これは、エンジンの種類によって異なります。

  • MyISAM:1000バイト
  • InnoDB:767バイト

データ型

ジョブに適したデータ型を選択してください。
少し前に、SOに関する質問で、データ型としてTEXTがリストされていましたが、使用されているのは100文字以下であることに気付きました。 彼らは、データ型をVARCHARに変更すると、クエリ時間が元の10分の1に減少したと報告しました。

最適なクエリ

LIKE式の左側をワイルドカード化すると、列のインデックスが使用できなくなることに注意してください。この種の検索が必要な場合は、 MySQLのネイティブMATCH .. AGAINST構文またはSphinxなどのサードパーティサポートのいずれかを使用して全文検索(FTS)を活用することを検討してください。クエリを見ずに、より多くの洞察を提供することは困難です。

于 2010-09-15T00:42:41.840 に答える
1

テーブルに適切なインデックスが付けられていれば、SQLデータベースで30,000レコードを検索するのは非常に高速です。クエリに使用できるインデックスがあることを確認する必要があります。フルテキストインデックスの使用を検討することもできます。

于 2010-09-15T00:33:31.653 に答える
0

場合によります。インスタント検索の実装では、プレーンな検索モデルよりもいくつのクエリが生成されますか?

私が見たほとんどのJavascriptライブラリは、カーソルがしばらく非アクティブになっていない限り、実際にはクエリを実行しようとしません。これらの結果は、プレーン検索の3〜4倍のクエリになります。入力されたすべての文字に対して本当に検索を実行する場合は、入力された文字と同じ数の検索を処理する必要があります。

とはいえ、それはクエリに含まれる作業の量に完全に依存します。

于 2010-09-15T00:34:51.137 に答える
0

データベースをどのように作成したかによって異なります。インデックスが重要であり、選択した列も重要です。最後に考慮すべきことは、検索アルゴリズムです。let'sキーワードでwhereまたはlike句を使用しているだけなら問題ないと思いますが、大きなコンテンツを探している場合は、MySQLの全文検索機能を検討する必要があります。

于 2010-09-15T00:37:23.517 に答える