【发布时间】:2012-04-03 09:10:12
【问题描述】:
我有一个页面,它从数据库中的表中获取所有行,然后在 HTML 表中显示这些行。 这很好用,但现在我想实现一个“搜索”功能。有一个搜索框,搜索词用空格隔开。我要让它在三个字段中搜索搜索词,“制造”、“模型”和“类型”。这三个字段是 VARCHAR(30)。
目前,如果我想使用 3 个字词(比如“酷”、“abc”和“123”)进行搜索,我的查询将如下所示。
SELECT * FROM table WHERE make LIKE '%cool%' OR make LIKE '%abc%' OR make LIKE '%123%' OR model LIKE '%cool%' OR model LIKE '%abc%' OR model LIKE '%123%' OR type LIKE '%cool%' OR type LIKE '%abc%' OR type LIKE '%123%'
这看起来真的很糟糕,如果有更多的搜索词或更多的字段要搜索,情况会变得更糟。 我的问题是:有更好的搜索方式吗?如果有,是什么?
【问题讨论】:
-
请注意,此查询会进行全表扫描,在大表上会很慢。
-
代码开发者也这样做吗?有没有办法加快速度?
-
是的,REGEXP 也进行全面扫描。
-
您可能想阅读我的演示文稿slideshare.net/billkarwin/…。
标签: mysql search html-table sql-like