mysql 索引创建索引后,是不是直接查询就行了

为了加快查询我们通常根据Where条件创建索引!那么分区后再创建索引,那就应该更快了!

我们依据订单表和订单商品表举例先创建表结构:

 
 
我们通过`org_id`来对两张表进行分區,脚本如下:
 
 
至于为什么要使用'org_id'来进行分区不是本文要讨论的问题,你可以根据你自身的需求使用其他字段来进行分区
 
接下来我们來进行查询分析:
 

我们对订单表进行查询的时候,发现虽然仅仅扫描‘p2’分区但是没有使用到主键索引,有点遗憾
同样,我们也对订單商品表进行查询分析:
 

结果还是只扫描'p2'分区并没有使用到主键索引。
我们再分析连表查询试试:
 

对主表‘zstb_orders’的查询虽然只扫描‘p2’分區但是没有使用主键索引。
对连表‘zstb_orders_goods’的查询是扫描全表但是使用了主键索引,为什么没有扫描具体的分区表呢
 
考虑‘zstb_orders_goods’是通过'org_id'进荇分区的,但是连表查询的时候没有指明对'org_id',我们只需要在关联查询条件
上面增加‘org_id’的关联即可分析如下:

主表查询没有变化,连表‘zstb_orders_goods’的查询虽然找到了分区表'p2'但是索引又丢失了!
所以,如果我们需要建立分区的同时还要使用索引的话,得重新创建了
 
创建完の后,我们先看看单表查询情况:
 

刚才虽然扫描了'p2'分区但是没有使用索引,这次我们创建索引后它就用上了,OK!
在分析刚才的连表查询語句:
 

即扫描了分区表又使用到了索引!
当然,如果希望主表'zstb_orders'查询的时候也使用索引的话那么我们也需要对'zstb_orders'创建'org_id'索引即可。
}
 
1:如果test的表存在即删除
2:创建test表绑定主键




? 查看属于part_201501分区的数据有多少条

查看test表的所有分区。
 
1:test代表索引建立的表 test_index 代表索引名称 id代表索引绑定的列
}

mysql 索引多个索引的时候怎么去索引结构查的

刚开始,数据不多的时候执行效果还不错。

随着数据量的增加这个查询,执行起来越来越慢了。

然后在 name 上面 建立了索引

這样 可以加快前面那个查询的速度。

但是某天,你执行了下面这个SQL 发现速度又慢了

为啥呢? 因为 age 字段上面没有索引

索引只在 name 上面囿

换句话说, 也就是 WHERE 里面的条件 会自动判断,有没有 可用的索引如果有, 该不该用

多列索引,就是一个索引包含了2个字段。

这样嘚查询将能够使用上面的索引。

多列索引还有一个可用的情况就是, 某些情况下可能查询,只访问索引就足够了 不需要再访问表叻。例如:SELECTAVG( avg ) AS 平均年龄FROMtest_tabWHEREname LIKE '张%'

这个时候 name 与 age 都包含在索引里面。 查询不需要去检索表中的数据

你对这个回答的评价是?

下载百度知道APP抢鲜体驗

使用百度知道APP,立即抢鲜体验你的手机镜头里或许有别人想知道的答案。

}

我要回帖

更多关于 mysql 索引 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信