深圳网站设计招聘,韶关做网站需要多少钱,网站制作 合同,最新免费下载ppt模板网站什么建立了索引#xff0c;也避免了索引失效问题#xff0c;还是会出现查询不走索引的情况#xff1f; 其实这个问题在于CBO#xff08;Cost-based Optimizer#xff09;#xff0c;优化器是很强大的#xff01;他根据开销来决定是否要用索引以及用哪个索引#xff01;…什么建立了索引也避免了索引失效问题还是会出现查询不走索引的情况 其实这个问题在于CBOCost-based Optimizer优化器是很强大的他根据开销来决定是否要用索引以及用哪个索引 总的来说Cost Server_Cost Engine_Cost也就是CPU开销和io开销 那具体哪些情况会导致有索引也不走呢
查找条数多
当查找条数非常多的情况下二级索引然后再回表去读磁盘开销还是挺大的。有可能优化器经过计算后就直接全表扫描主键了只用读一遍磁盘。
索引状态分布不均
通常来讲索引建立在高选择性的字段比如订单日期、订单ID等。但对于某些业务其实比较特殊比如订单状态只有三种已完成、支付中、超时。这种业务几种状态肯定是分布不均匀的已完成的肯定特别多超时或者支付中可能会少。所以实际上建立索引为了索引后两种状态的订单。但是通常优化器会认为几个状态的比例是等比的也就是各占 1 3 \frac{1}{3} 31所以会避免过多回表而不用索引。但实际上我们就是为了查少量的才建立索引所以这时候我们要告诉优化器这几种比例不同这样就可以用上索引了。