[英]efficient mySQL fulltext index
我希望将游戏结果存储在表中。 每回合将由2-10名玩家参加。 每个玩家将获得1-5分。 我需要一种有效的方法来检索给定玩家/得分范围的所有回合。 例如:
select all rounds where Hamburger14 scored 5
select all rounds where Cheese3 scored 1
select all rounds where Hotdog99 scored 4
我的第一个想法是使用全文索引的varchar字段“ player_score”并按如下方式进行填充:
player1:0-player2:3-player3.1
然后,如果我希望玩家1得分为5的所有回合,我都会这样做:
select * from rounds where match(player_score) against("player1.5")
如果玩家池保持很小并且分数只有1-5,这似乎是可行的,尽管我可能需要弄乱默认的mySQL非索引字表或使用十六进制值作为分数等。
但是,关于此的某些事情看起来非常丑陋。 有什么建议么?
可选:如果将来如果我想检索给定玩家和SCORE RANGE的回合(例如,playerX得分为3或更高的所有回合),那么如何实现?
全文-不。
CREATE TABLE Rounds (
round_num SMALLINT UNSIGNED NOT NULL,
player VARCHAR(55) NOT NULL,
score TINYINT UNSIGNED NOT NULL,
PRIMARY KEY(round_num, player),
INDEX(player, score)
);
然后做
SELECT * FROM Rounds
WHERE player = "player1"
AND score = 5;
要获取有关该回合的其余信息:
SELECT r.*
FROM ( SELECT round_num FROM Rounds
WHERE player = "player1"
AND score = 5 ) AS x
JOIN Rounds AS r USING(round_num);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.