最近在做项目中,对原有表的索引进行了更改,之前的唯一索引,为了删除唯一性,要保持这2个字断的索引。所以先删了之前的,全部都没有了,再增加了一个联合索引,然后
就以为ok了,结果导致主站访问的速度很慢达到了6s,这个不能忍,领导发现后排查出来是关于我把索引没有健全导致的。所以以此来完整的学习下mysql索引的实现。
ALTER TABLE PN_TicketGroup add index `IX_SHOP_TICKETCATEGORY` (shopId,ticketCategoryId);
这是我删除之前唯一索引后加的,自己以为会是2个字断查询都会走索引,结果不是。现初步了解到b+树对于索引的实现里面是把这2个字断当作整体来建的,所以用2个字断来查
询会走索引,使用第一个字断也会走索引,但是如果使用第二个字断就不会走索引,导致全表扫描,应为该表是商品表,很大!每次查询都全表扫,要是访问大点估计mysql io应
该就是满的,导致mysql就直接挂了。后果很严重幸亏早点发现,所以想系统的学习下。
本片只是开始,建议大家对于一个知识点还是要系统的进行学习,不然就等着犯错吧。
截下来就是学习总结的部分了,先买了本高性能mysq 来进修下。l