【问题标题】:Ask for sql dilettante, who can tell me whether this sql is efficient?求sql外行,谁能告诉我这个sql是否高效?
【发布时间】:2012-10-14 09:34:55
【问题描述】:

我正在写这样的sql

SELECT uid
  FROM search
 WHERE MATCH(product) AGAINST('football basketball')
   AND status=1
 ORDER BY MATCH(product) AGAINST('football basketball') DESC

我在mysql中运行正常,但不确定是否有效。我想知道这个“MATCH(product) AGAINST('football Basketball')”是否跑了两次?

【问题讨论】:

  • Wouldn't a: ORDER BY product DESC 做同样的工作吗?
  • @PanagiotisPalladinos, MATCH...AGAINST 可以返回匹配的相关性。然而,这似乎有一些棘手的方面。查看此文档页面上的第二条评论:dev.mysql.com/doc/refman/5.5/en/fulltext-search.html

标签: mysql sql


【解决方案1】:

如果您不想同时选择匹配项,则需要将别名放在 where 子句中。但是别名只运行一次并将结果存储在“变量”中

SELECT uid
FROM search
WHERE MATCH(product) AGAINST('football basketball') as imatch
AND status = 1
ORDER BY imatch DESC 

【讨论】:

    【解决方案2】:

    这可能工作无忧:

    SELECT uid, MATCH(product) AGAINST('football basketball') as imatch
      FROM search
     WHERE imatch 
      AND status=1
     ORDER BY imatch DESC
    

    【讨论】:

      猜你喜欢
      • 2020-08-09
      • 2013-05-08
      • 2015-12-28
      • 1970-01-01
      • 2013-05-29
      • 1970-01-01
      • 2017-05-03
      • 1970-01-01
      • 2017-04-06
      相关资源
      最近更新 更多