高效的mySQL全文索引

时间:2018-03-17 14:32:40

标签: mysql indexing full-text-indexing

我希望将游戏结果存储在一个表格中。每轮比赛将由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停止列表或使用HEX值作为得分等。

但有些事情似乎非常丑陋。有什么建议吗?

可选:如果将来如果我想在给定球员和SCORE RANGE的情况下检索回合(例如,所有回合,其中playerX得分为3或更多),这将如何实现?

1 个答案:

答案 0 :(得分:0)

FULLTEXT - 没有。

filter()

然后做

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;