0

一般的に言えば、非常に多くの異なる可能性、列、テーブル、結果などがある場合、最適化された 20 ~ 30 のオプション フィールドを持つ「高度な検索フォーム」から MySQL クエリがどのように生成されるのでしょうか?

4

1 に答える 1

0

一般的に言えば、それらはデータベースから返されません。多くのフィールド オプションを備えた高度な検索を使用すると、適切な測定のためにいくつかのブール論理がスローされる可能性があり、LuceneSphinx、または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 に答える