还有空间索引,平时也比较少用。目前只有MyISAM存储引擎支持空间检索。目前博主也只接触过InnoDB存储引擎。
1.2.5、一般一张表索引不要超过5个,而且避免重复索引,而且也不是建了索引,根据索引字段条件查询,索引就会起作用。
1.2.6、一般哪些场景会导致索引失效:a.使用like关键字匹配字符串第一个为”%”的场景。b.条件中包含or、in、not in、<>关键字,默认不走索引的。c.访问表上的数据行超出表总记录数30%,变成全表扫描。d.查询条件使用函数在索引列上,或者对索引列进行运算。e.多列索引中,第一个索引列使用范围查询,只能用到部份或无法使用索引。f.多列索引中,第一个查询条件不是最左索引列,上面多列索引概念中也有提到。肯定还有更多的场景,但是博主现在能想到的场景就这些了。
1.2.7、不能同时使用两个索引,一个过滤数据,一个用于排序(主键除外)。
1.2.8、DML语句如果使用索引,会导致lock全表;如果使用了非唯一索引,可能只是锁住一定范围。对此,建议更新/删除数据尽量用上索引,如果可以最好用上主键或唯一索引,另外事务要及时提交。
1.2.9、最后一点,如何看执行计划,分析SQL的性能。这个吧,三言两语说不清楚,直接看其他博主的博文吧: mysql explain执行计划详解 。一定要看!!!
(3)关于事务的一些建议
如果没有听过事务这么个概念,网上了解学习一下,先理解一下各个事务类型的含义吧:a.日志记录尽量放在独立事务里面,避免后面的异常发生导致日志丢失。b.上面已经几次提到,尽早提交事务,避免事务过长,因此写代码的时候,一些可以不放到事务的逻辑可以移到外面,长事务看能否拆成两个事务。
(4)关于数据库连接池。
可能一些猿友都少去注意吧。先来看看一些参数,这里只罗列了博主比较关注的,更多的可以自行查看一下配置。
initialSize : 默认值是 0, 连接池创建连接的初始连接数目。