【问题标题】:Full Text query run slow first time and then fast全文查询先慢后快
【发布时间】:2017-11-13 12:03:53
【问题描述】:

有人知道这种行为的一些信息吗?我在同一个数据库上运行这个查询

SELECT
                mk.IdMedia                    
            FROM
                mediakeyword mk                  
            WHERE
                MATCH(mk.SearchText) AGAINST('+"france"' IN BOOLEAN MODE) > 0

这个计划

"id"    "select_type"   "table" "type"  "possible_keys" "key"   "key_len"   "ref"   "rows"  "Extra"
"1" "SIMPLE"    "mk"    "fulltext"  "SearchText"    "SearchText"    "0" \N  "1" "Using where"

SearchText 有一个全文索引,引擎是 MyISAM

奇怪的行为是我第一次运行查询计算的时间是 2,324 秒,第二次是 0,015,为什么?

有没有办法指示 mysql 具有相同的第二种行为?

【问题讨论】:

    标签: mysql full-text-search query-optimization timing


    【解决方案1】:

    FULLTEXT 在 InnoDB 中可用;考虑迁移。

    有两件事会导致“一慢,二快”:

    • 第一次运行查询时,它可能需要从磁盘获取索引和/或数据块。第二次,这些块被缓存在 RAM 中,因此速度更快。

    • “查询缓存”(如果启用)会记录查询及其结果集。因此,如果完全第二次运行相同的SELECT,它可以简单地查找之前计算的结果。

    【讨论】:

    • 有一些动作可以强制对某些表使用 ram?在这种情况下媒体关键字?为什么要迁移到 InnoDB?谢谢
    • 手动尝试分配 RAM 通常适得其反。 (而且没有办法这样做。)当你得到一个损坏的索引或不一致的数据或......时,我们可以讨论你为什么应该切换到 InnoDB。网络上有很多这样的列表。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-28
    • 2017-01-11
    • 2019-06-27
    相关资源
    最近更新 更多