我不确定,我是对还是错。
我有两个索引x_person,y_person。
如果我在x_person上查询
SELECT * FROM x_person WHERE is_active = 0 LIMIT 0,1;
mysql> show meta;
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| total | 1000 |
| total_found | 131541 |
| time | 0.005 |
+---------------+--------+
3 rows in set (0.00 sec)
在y_person中查询:
SELECT * FROM y_person WHERE is_active = 0 LIMIT 0,1;Show meta;
mysql> show meta;
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| total | 1000 |
| total_found | 34733 |
| time | 0.002 |
+---------------+-------+
3 rows in set (0.00 sec)
假设我一起选择x_person和y_person索引,则total_match应为131541 + 34733 = 166274
SELECT * FROM x_person,y_person WHERE is_active = 0 LIMIT 0,1;
mysql> show meta;
+---------------+--------+
| Variable_name | Value |
+---------------+--------+
| total | 1000 |
| total_found | 165552 |
| time | 0.008 |
+---------------+--------+
3 rows in set (0.00 sec)
这里我得到了total_found = 165552.任何人都可以解释为什么这不显示相同的'total_found'数字?
答案 0 :(得分:1)
Sphinx会搜索这两个索引,并对结果进行“联合”处理。将它们加在一起。
131541 + 34733 = 166274. Which is roughly 165552
略有差异可能是
total_found通常是近似值。所以不要完全相加。
重复ID 。如果在每个索引中找到相同的doc_id,则只会在最终结果集中返回ONCE。 total_found将反映这种“重复数据删除”(但仅次于)
通过提升max_matches
可以使它更接近近似,它足以包含整个结果集,这个数字将是精确的。