5.4.?查询很慢或者没有利用索引,为什么?

UXDB并不自动维护统计数据。必须进行一次显式的VACUUM调用来更新统计数据。在统计数据更新之后,优化器就知道表里面有多少数据行,因而就可以更好的判断是否应该使用索引。要注意当表很小的时候优化器并不使用索引,因为这时候一次顺序扫描会更快。

对于字段相关的优化统计,使用VACUUM ANALYZE。VACUUM ANALYZE对于复杂的多联合查询是非常重要的,因为这样优化器可以计算从每个表里面返回的行的数目,然后选择合适的联合顺序。后端本身并不跟踪字段统计,因而必须周期的运行VACUUM ANALYZE以便收集这些信息。

索引通常不用于ORDER BY操作:对一个大表的一次顺序扫描然后跟着一个显式的排序比对所有记录的索引扫描要快,因为前者的磁盘访问更少。

当使用模糊操作符,比如LIKE或~,只有在搜索的开始是挂在字串的开头部分时才用得到索引。因而要使用索引,LIKE搜索不应该以%开头,而~(规则表达式搜索)应该以^开头。

XML 地图 | Sitemap 地图