表格 users
,full text search
列上的username
索引。
查询:
SELECT
MATCH (username) AGAINST ('shaharyar' IN NATURAL LANGUAGE MODE) AS `score`,
uid,
first_name,
username,
`status`,
created
FROM users
WHERE
MATCH (username) AGAINST ('shaharyar' IN NATURAL LANGUAGE MODE) AND
uid <> 164125 -- to prevent self profile search
ORDER BY
score DESC,
created DESC
问题: Match
子句会执行2次吗?
我知道MySQL默认按score
降序排序,但在这里我需要双重排序条件,这就是我选择列的原因。
解释扩展:
+----+-------------+-------+----------+------------------+----------+---------+-----+------+----------+-----------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+-------+----------+------------------+----------+---------+-----+------+----------+-----------------------------+
| 1 | SIMPLE | users | fulltext | PRIMARY,username | username | 0 | | 1 | 100 | Using where; Using filesort |
+----+-------------+-------+----------+------------------+----------+---------+-----+------+----------+-----------------------------+
表中约有150K +记录。
答案 0 :(得分:0)
我想这样。这通常使用self.mapView.currentPositionView = [[UIImageView alloc]
initWithImage:[UIImage imageNamed:@"picture"]];
子句编写:
having
答案 1 :(得分:0)
是和否。
WHERE MATCH...
将被执行若干次,从而“过滤”不匹配的行。只剩下的行需要第二次执行MATCH
。
HAVING
必须为所有行执行MATCH
(除了具有该uid的行),构建包含所有这些行的临时表。只有这样HAVING
才能进行过滤。
因此,即使在MATCH
版本中执行HAVING
次数较少,查询也可能运行得更快。
你做有FULLTEXT(username)
,不是吗?
为什么,为什么,对一个单词使用全文查询?