0

我正在网站上进行搜索,我总共有 10 个应该搜索的表。

我不想使用这样的多个查询:

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

相反,我想使用单个查询来获取所有所需的数据并分配要访问的结果网站 URL。

我应该如何表现?

4

2 回答 2

0

使用分隔查询是很好的解决方案。如果您将在一个查询中使用所有表,则所有表都将锁定查询时间。如果您将使用 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 回答