インスタント検索には多くのコンピューティングパワーが必要ですか?

StackOverflow https://stackoverflow.com/questions/3713879

  •  02-10-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

インデックス付け

インデックス作成は役立ちますが、インデックス作成は挿入/更新/削除ステートメントを遅くします...

MySQLは、テーブル内の列のインデックスを作成するために使用できるスペースの量も制限します, 、そしてそれはエンジンタイプに依存します:

  • ミサム: :1000バイト
  • innodb: :767バイト

データ型

ジョブに適したデータ型を選択します。
少し前に、私は質問がデータ型としてテキストをリストしているが、100文字のみを使用していることに気づいた。 彼らは、クエリ時間が減少するのを見たと言って報告しました 第3 10番目 データ型をVarcharに変更したときのオリジナルの。

最適なクエリ

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

他のヒント

任意のSQLデータベースで30,000のレコードを検索すると、テーブルが適切にある場合は非常に高速になるはずです インデックス付き. 。クエリに使用可能なインデックスがあることを確認する必要があります。また、使用を検討することもできます フルテキストインデックス.

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

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

それはすべて、それはクエリにどれだけの作業が関与しているかに完全に依存します。

データベースの作成方法によって異なります。インデックスが重要であり、選択した列も行います。最後に考慮すべきことは、検索アルゴリズムです。 where or like clause on Let'sキーワードを使用している場合は、問題になると思いますが、大きなコンテンツを探している場合は、おそらくMySQLのフルテキスト検索機能を検討する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top