繁体   English   中英

用多个表在sql中搜索的最佳方法是什么?

[英]What is the best way to search in sql with multiple tables?

我的桌子上有3张桌子,我想从空格中分割的短语中搜索它们

例如:快棕色。

首先,它将搜索词组“ the quick brown”,然后是“ The”,“ quick”,“ brown”

我的方法是合并所有表然后进行搜索。

SELECT body FROM
(SELECT body FROM table1
UNION ALL
SELECT body FROM table2)
) AS row WHERE body LIKE '%The quick brown%' OR body LIKE '%The%' OR body LIKE '%quick%' OR body LIKE '%brown%'

更快地做到这一点的最佳方法是什么?

顺便说一下,我正在使用MySQL

只是一些观察:

  • 因为子句之间有OR ,所以查询将始终执行like %the%子句,例如,该子句始终包含并提供比最严格的子句更广泛的结果。 我以为你不想要的东西。
  • 因为您有以%开头的子句,所以即使在那里没有那些全表联合,也可以保证在那里进行了全表扫描。

我认为最好的解决方案是在技术堆栈中添加诸如sphinx之类的全文本搜索组件,因为它可以执行此类搜索并基于复杂算法返回加权结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM