一般的に言えば、非常に多くの異なる可能性、列、テーブル、結果などがある場合、最適化された 20 ~ 30 のオプション フィールドを持つ「高度な検索フォーム」から MySQL クエリがどのように生成されるのでしょうか?
質問する
52 次
1 に答える
0
一般的に言えば、それらはデータベースから返されません。多くのフィールド オプションを備えた高度な検索を使用すると、適切な測定のためにいくつかのブール論理がスローされる可能性があり、Lucene、Sphinx、またはXapianなどの検索サーバーから返されます。
データベースからの復帰を効率的に行うことはほとんど不可能です。これは通常、次のようにクエリを動的に構築することによって行われます。
SELECT ... WHERE 1=1
次に、他の各フィールドをループして追加します
AND field LIKE '%abc'
AND field_2 LIKE '%def%'
AND field LIKE 'GHI%'
%
理想的には、可能であれば (パフォーマンス上の理由から) 最初または最後にwhildchar を追加するか、フィールド データ内の検索の両方に追加します。
このクエリを構築して実行すると、適切なインデックス作成が実質的に不可能になり、パフォーマンスが低下し、パフォーマンスのボトルネックの主な候補になります。
于 2013-03-19T20:35:26.140 に答える