1

問題は次のとおりです。技術製品を含む巨大な (私のレベルでは) mysql データベースがあります。データベースに 15 万行の製品と、同じ数の行を持つ 10 ~ 20 の他のテーブルがあります。各テーブルには多くの基準が含まれています。基準には、テキスト値、10 進数、単なるブール値などがあります。このデータベースへの Web アクセス (php) に各基準のフィルターを提供したいのですが、それを本当に速く行う方法がわかりません。複数の結合を避けるために、すべての列をマージして大きなテーブルを作成し始めました。これはクールで、大きな結合よりも高速ですが、それでも非常に遅いです。すべての基準にインデックスを付けても、状況は改善されません (そして、それは悪い考えだと聞きました)。複数条件検索の前処理に役立つクールなアルゴリズムがいくつかあるのではないかと考えていました。何か案が ?

ありがとうございます。

4

2 に答える 2

1

SQL でこれを行うことに不満がある場合は、Luceneを参照してください。範囲検索、全文検索などを行うことができます。

于 2009-08-26T13:20:42.640 に答える
0

全文検索 を試す テキスト フィールドをまとめてグロブ化し、全文検索を実行してみてください。

クエリを最適化 する 他の列については、予想される使用頻度の順にランク付けします。クエリのテスト スイートを作成し、それらすべてを実行して、パフォーマンスを把握します。次に、インデックスの追加を開始し、パフォーマンスへの影響を確認します。パフォーマンスが向上するまで、インデックスを追加し続けます。悪くなったらやめましょう。

Explain Plan を使用 する SQL またはテーブル レイアウトが提供されていないため、これ以上具体的に説明することはできません。ただし、Explain Planコマンドを使用して、テーブル スキャンを実行するのではなく、クエリがインデックスにヒットしていることを確認してください。クエリ内の列の順序などの微妙な要素がインデックスが有効かどうかに影響する可能性があるため、これは注意が必要です。

于 2009-08-25T16:20:42.713 に答える