0

私はウェブサイトで検索を行っています。検索する必要がある合計 10 個のテーブルがあります。

次のような複数のクエリを使用したくありません。

SELECT `manufacturer` FROM `auto` WHERE ....
SELECT `city`,`address` FROM `estate` WHERE ....
SELECT `title`,`content` FROM `news` WHERE ....
... and 6 more queries

代わりに、単一のクエリを使用して必要なデータをすべて取得し、結果の Web サイト URL を割り当てて移動したいと考えています。

どのように振る舞うべきですか?

4

2 に答える 2

0

使用法はクエリを分離するのが良い解決策です。1 つのクエリですべてのテーブルを使用する場合、すべてのテーブルはクエリの時間だけロックされます。また、LIKE または全文検索を使用する場合は、サイトをロックできません。

テーブルごとに個別のクエリを使用できます。または、検索用に外部インデックスを作成できます。たとえば、sphinx - を使用してインデックスを作成し、インデックスで検索できます。

于 2012-12-14T11:26:12.653 に答える
0

通常の方法はUNION、クエリへの

SELECT * FROM (
    (
        SELECT `manufacturer` AS sval FROM `auto` WHERE ....
    )
    UNION
    (
        SELECT CONCAT(`city`,`address`) AS sval FROM `estate` WHERE ....
    )
    UNION
    (
        SELECT CONCAT(`title`,`content`) AS sval FROM `news` WHERE ....
    )
)
于 2012-12-14T10:04:14.773 に答える