【问题标题】:Full Text search and Subqueries in the FROM ClauseFROM 子句中的全文搜索和子查询
【发布时间】:2013-10-01 10:02:05
【问题描述】:

当我尝试以下查询时:

select co_id, Match(co_title,co_description,co_text) AGAINST ('word')  from (select * from content limit 100)co

结果是:#1191 - 找不到与列列表匹配的 FULLTEXT 索引

FULLTEXT 索引设置正确:

当我尝试时:

从内容中选择 co_id, Match(co_title,co_description,co_text) AGAINST ('word')

效果很好。

为什么第一个查询不起作用?

【问题讨论】:

    标签: mysql full-text-search full-text-indexing


    【解决方案1】:

    实际上,这不仅仅与 FULLTEXT 有关 - 那是因为您指的是子查询(在 FROM 子句中),它是运行时创建的表(行集)并且没有任何索引,所以 FULLTEXT 也是如此。

    我建议这样做:

    SELECT 
      co_id, 
      MATCH(co_title,co_description,co_text) AGAINST ('word') 
    FROM 
      content 
    LIMIT 100
    

    【讨论】:

    • 在这种情况下,我正在对所有行进行全文搜索,然后提取前 100 行。我对吗?我的意思是不要搜索所有内容表(我的内容表很大)。这可能吗?
    • 当使用LIMIT - 它不完全等于FULL SCAN,尤其是在选择前N行时。在这种情况下,DBMS 将只读取并返回 N 行,这将很快 - 尽管有 FULL SCAN 执行计划
    猜你喜欢
    • 1970-01-01
    • 2021-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多