您好,老师:
回答上述问题
1.创建多的索引,会占用更多磁盘空间。如果有一张很大的表,索引文件的大小可能达到操作系统允许的最大文件限制;
2.对于DML操作的时候,索引会降低他们的速度。因为MySQL不仅要把搞定的数据写入数据文件,而且它还要把这些改动写入索引文件;
改善数据库性能:
1.索引优化,选择合适的索引列,选择在where、group by、order by、on 从句中出现的列作为索引项,对于离散度不大的列没有必要创建索引。
2.索引字段越小越好。
3.SQL语句的优化、数据表结构的优化。
3.1:选择可存数据最小的数据类型,选择最合适的字段类型,进行数据的存储;
3.2:数据量很大的一张表,应该考虑水平分表或垂直分表;
3.3:尽量不要使用text字段,如果非要用,那么应考虑将它存放另一张表中;
4.数据库配置的优化:
4.1:连接数的配置,因为大量的连接,不进行操作,那样也会占用内存。
4.2:查询缓存的配置,但在MySQL 8.0就删除了此功能。
5.硬件的配置;
额外加说一下,常见性能的问题:
1.条件字段函数的操作,给索引字段做了函数计算,就会破坏索引值,因此优化器就放弃了走树搜索能够;
2.隐式类型转换,比如数据库字段是varchar类型,创建的索引,但是使用的时候传入的是int类型,那么会走全表扫面;
3.隐式字符编码转换,如果join 两表的时候,两表的字符集不同,也不能用上索引;
展开