多个表和多列的自由文本搜索?

时间:2015-02-12 10:10:06

标签: sql performance

SQL解决方案应该如何通过数据库表和列进行非常有效的文本搜索?

我们要求用户应该能够通过自由文本搜索搜索大量数据。 数据被分成多个表,当然每个表有多个列。 列可以是数字数据类型或文本列。

如果用户搜索例如

Mainstreet 1013

我们可以做类似的事情:

SELECT * FROM TableA WHERE 
   columnVarcharX LIKE '%Mainstreet%' OR 
   columnVarcharX LIKE '%1013%' OR 
   columnIntegerX LIKE '%1013%'
SELECT * FROM TableB WHERE
   columnVarcharY LIKE '%Mainstreet%' OR 
   columnVarcharY LIKE '%1013%' OR 
   columnIntegerY LIKE '%1013%'
....

还有更多。 但这不是一种高效且不易维护的问题。 我们通常使用H2database,MySQL和PostgreSQL。

也许非常基本的问题,这类问题是如何命名的?

如何解决这个问题?

是否有任何SQL标准解决方案来解决此类问题?

1 个答案:

答案 0 :(得分:-1)

试试这个:

 DECLARE
     @street AS VARCHAR(50),
     @integer AS VARCHAR(50)

    SET @street = 'Mainstreet%'
    SET @integer = '1013%'

    SELECT * FROM tableA, tableB
    WHERE columnName LIKE @find
    OR columnName1 LIKE @integer