公司报表数据量比较大,需要优化,用的是mybatis的动态sql,所以条件会改变,在这种情况下复合索引会失效,请问这种情况应该怎么优化比较好。
如果条件会变,那就别用复合索引,全部建立单独索引。
建立索引的目的是为了提高查询效率。
使用动态SQL,说明查询的条件会有所变化。
复合索引会按照字段的先后顺序依次命中,部分命中的情况下,依然可以被利用到。
一个表的索引数量最好不要超过5个,否则影响插入性能。
把有关这个表的高负载查询都列举出来,也就是动态SQL的所有出现的情况都列举出来。
列举出所有高负载的查询条件,看看这些条件中,哪些条件会频繁出现。
复合索引的命中是有着规律的,比如:
Index_1(A,B,C) 这个索引,有三个字段,那么,它可命中的查询条件是:
最后,尽量避免全表查询。尽量能分页的就分页,不能分页的弄个最大记录数,全表查询容易产生慢查询和内存泄露。