mysql数据库调优
- 是不是索引越多越好:并不是
因为索引虽然加快了查询速度,但是索引也是有代价的,索引文件本身
是要消耗存储空间的,同时索引会加重插入、删除和修改记录的负担,另外
mysql在运行时也要消耗资源维护索引
- mysql数据库关于InnoDB表设计的主键设置
如果表使用自增主键,那么每次插入新的记录,记录就会顺序添加到
当前索引节点的后续位置,当一页写满,就会自动开辟新一页,这样就会形
成一个紧凑的索引结构,近似顺序填满,由于每次插入主键的值近似于随机
因此每次新记录都要被插到现有索引页的中间某个位置,此时MySQL不得
不为了将新记录插到合适位置而移动数据,甚至目标页面可能已经被回写
到磁盘上而从缓存中清掉,此时又要从磁盘上读回来,这增加了很多开销
同时频繁的移动、分页操作造成了大量的碎片,得到了不够紧凑的索引结
构,后续不得不通过OPTIMIZE TABLE来重建表并优化填充页面,因此
只要可以,请尽量在InnoDB上采用自增字段做主键
sql语句关于group by在数据库版本中的查缺补漏
- 在Mysql8.0及以上 only_full_group_by以及其他关于sql_mode原因报错详细解决方案(具体可详细百度)
- 解决办法:这边个人建议不能去修改数据库配置,因为有些时候生产环境的时候牵一发而动全身
- 如果小伙伴是oracle的熟练者那就不用多说了,因为oracle是直接不允许查询列与分组列不同的
- 这边建议小伙伴都养成好习惯,当然这个你说我关联查询了百十来个字段,那这时候不得炸?所以这时候就是要认真考虑表结构了,当然这修改表结构显然在正式环境不切合实际,老铁还是一点一点加上去吧!!!!
错误的写法
select id,name from test group by id
正确的写法
select id,name from test group by id,name