2

これはやや漠然とした質問であることは承知していますが、どのアルゴリズムがより効率的かつ/または「高速」になりますか?

名前のプリロードされた JavaScript 配列を検索するか、MySQL クエリを使用します"SELECT NAME WHERE NAME LIKE '%VARIABLE%'か? MySQL は jquery AJAX を使用して呼び出され、PHP ファイルにアクセスします。

私のウェブサイトの背景を少し説明します。これは主にモバイル ユーザー向けのサイトであり、jquery と php を組み合わせてコンテンツを配信しています。この場合、ユーザーは、約 22,000の一意の名前のリスト内で特定の名前を検索します。

LocalStorage をキャッシュとして使用してテーブルを格納することも考えましたが、その場合、キャッシュを検証/更新/ロードする追加の (コストはかからないかもしれませんが) ステップが必要です。

さらに情報が必要な場合は、事前にお知らせください。

編集:

ちょっとした追加情報として、ユーザーは複数の一意でない値を検索できますし、おそらく検索するでしょう。例: 「ジェーン」の検索値は結果を返すことができ、返す必要があります'Jane Smith', 'Janet Smith', 'Jane Doe', 'Janess Whatver', 'jfhfuhd_JANE_dfifhf, 'Blah'(誰がそのような名前を持っているかはわかりませんが、データベースにあり、ジェーンを検索した場合は、他のものと一緒に返されるはずです)

4

2 に答える 2

3

これは単なる憶測ですが、テストせずに、すぐに MySQL クエリを使用します。MySQL は、最高の検索/ソート アルゴリズムを実現するために開発者によって最適化されています。JavaScript インタープリターを作成する人は、検索/ソート アルゴリズムの最適化に専念する時間があまりありません。

追加のプラスとして、Javascript オプションはクライアントのコンピューターの速度とブラウザーに依存します。インタープリターの実装が不十分な遅いデバイスでは、はるかに長い時間がかかります。ただし、MySQL オプションはサーバーに依存するため、完全に制御できます。

いくつかのテスト

設定値 (jsfiddle.net/c6rpK/) と比較した、10,000 個の値を持つ JavaScript 配列 - 約 12ms を取得します

MySQL を使用した同じテストでは、2.3ms が得られます

于 2013-04-15T11:48:04.217 に答える
3

私はMySQLに行きます。実際、私は2つを比較しようとさえ思いませんでした。

データベースはデータの処理が得意です。それが彼らの仕事です。彼らにやらせてください。

データをローカルに保存することには、いくつかの欠点があります。

  • データの一部が変更された場合はどうなりますか? すべてのデータをすべてのクライアントに再投稿しますか?
  • まず、すべてのデータをすべてのクライアントに送信する必要があります。
  • クライアントには、そのデータ用のスペース (予約済み) がありますか?

もちろん、名前を完全または部分的に索引付けするのが最善です。

于 2013-04-15T11:51:20.190 に答える