一、like查询,耗时248毫秒,EXPLAIN分析结果为全表扫描。二、json函数查询,利用JSON_SEARCH函数,查询耗时196毫秒,速度稍快于like查询,EXPLAIN分析结果仍为全表扫描。三、联合索引查询,建立type-del-is_leaf的联合索引后,执行like查询和json查询,明显提速。like查询耗时136毫秒,json查询耗时82.6毫秒。
MySQL全文索引、联合索引、like查询、json查询速度大比拼
表tmp_test_course拥有10万条记录,json字段outline保存一对多关系,查询目标总数据量为2931条。本文对比全文索引、联合索引、like查询及json查询的速度。
一、like查询,耗时248毫秒,EXPLAIN分析结果为全表扫描。
二、json函数查询,利用JSON_SEARCH函数,查询耗时196毫秒,速度稍快于like查询,EXPLAIN分析结果仍为全表扫描。
三、联合索引查询,建立type-del-is_leaf的联合索引后,执行like查询和json查询,明显提速。like查询耗时136毫秒,json查询耗时82.6毫秒。EXPLAIN分析结果显示,两者查询扫描的行数都限定在2931行。
四、全文索引查询,将json字段定义为支持全文索引类型后,使用全文索引进行检索,耗时仅为11.6毫秒,速度提升显著。EXPLAIN分析结果显示只扫描了一行。
全文索引、联合索引、json函数查询及like查询的执行结果为:全文索引:11.6ms、联合索引:82.6ms(json)、136ms(like)、json函数查询:196ms、like查询:248ms。结论是全文索引速度最快,且数据量越大,全文索引速度优势越明显。对于百万或千万级别的表,全文索引的提升差距会更大。因此,全文索引是推荐使用的选择。2024-11-01