【发布时间】:2016-09-19 10:56:08
【问题描述】:
表: 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+ 条记录。
【问题讨论】:
标签: mysql sql full-text-search query-optimization