直接上优化sql
select * from table where field in
(select field from table where field like "%模式%");
前提要求 field 对应的表列上需要创建索引。
一般优化效果已经很明显。
优化原理:用索引全扫描取代表的全扫描。因为索引全扫描的代价是全表扫描的1/N (即索引块数与数据块数的比例),表数据越多,优化效果越明显。
优化后的sql语句,根据索引再回表的代价要看符合条件的记录数多少:如果in子查询返回的记录数很少,那么优化的效果就相当于效率提高了N倍;如果in子查询返回的记录数较多,两种SQL的性能区别就不是很明显了。