聊聊数据库~4.SQL优化篇】的更多相关文章

1.5.查询的艺术 上期回顾:https://www.cnblogs.com/dotnetcrazy/p/10399838.html 本节脚本:https://github.com/lotapp/BaseCode/blob/master/database/SQL/02.索引.查询优化.sql 文章有点小长,但认真阅读肯定会有所感触和收获的.PS:我把我能想到的都列下来了,如果有新的会追加,欢迎补充和纠错~ 1.5.1.索引 大方向:减少冗余索引,避免重复(无用)索引 1.概念 大一统分类: 聚簇…
上篇回顾:聊聊数据库~SQL环境篇 扩展:为用户添加新数据库的权限 PS:先使用root创建数据库,然后再授权grant all privileges on 数据库.* to 用户名@"%" identified by "密码";并刷新flush privileges; 查看权限:show grants for dnt; 效果: 1.3.MySQL部署 之前有园友说,为啥不顺便说说UbuntuServer的部署呢?呃...一般来说公司服务器都是CentOS的占大多数…
传统数据库 上篇文章:聊聊数据库~开篇 https://www.cnblogs.com/dotnetcrazy/p/9690466.html 本来准备直接开讲NoSQL的(当时开篇就是说的NoSQL)考虑到有些同志可能连MySQL系都没接触过,所以我们2019说数据系的时候预计从MySQL(穿插MSSQL)开始,这篇文章就当试水篇,效果好就继续往下写~(这篇偏理论和运维) 1.1.MariaDB and MySQL 官方文档:https://mariadb.com/kb/zh-cn/mariad…
1.6.SQL运维篇 运维这块逆天只能说够用,并不能说擅长,所以这篇就当抛砖之用,欢迎补充和纠错 PS:再说明下CentOS优化策略这部分的内容来源:首先这块逆天不是很擅长,所以主要是参考网上的DBA文章,之后请教了下运维相关的朋友,大家辩证看就行了,我只能保证90%的准确度(具体看业务) 1.6.1.概念 1.RAID系 RAID:磁盘冗余队列 把多个容量小的磁盘组成一组容量更大的磁盘,并提供数据冗余来保证数据完整性的技术 RAID0:数据条带(好处:成本低,应用:数据备份) 需要硬盘数>=2…
我们看看 TiDB 一段代码的实现 --- 左外连接(Left Out Join)的消除; select 的优化一般是这样的过程: 在逻辑执行计划的优化阶段, 会有很多关系代数的规则, 需要将逻辑执行计划(LogicalPlan)树应用到各个规则中, 尝试进行优化改写; 我们看看其中的一条优化规则: outerJoinEliminator TiDB作为优秀的开源项目, 代码的注释也非常优秀, 里面提到了满足这些条件的 Left Outer Join 可以消除右表; // tryToElimina…
转载于:https://www.cnblogs.com/wangzhengyu/p/10412499.html SQL优化的具体操作: 1.尽量避免使用select *,返回无用的字段会降低查询效率. 优化方式:使用具体的字段代替*,只返回使用到的字段. 2.尽量避免使用in 和not in,会导致数据库引擎放弃索引进行全表扫描. 优化方式:如果是连续数值,可以用between代替.如果是子查询,可以用exists代替. 3.尽量避免在字段开头模糊查询,会导致数据库引擎放弃索引进行全表扫描. 优…
上篇回顾:https://www.cnblogs.com/dotnetcrazy/p/10810798.html#top 1.6.5.MySQL日志相关 本文的测试环境:MySQL5.7.26.MariaDB5.5.60.MySQL8.0.16 PS:版本查询select version(); 1.MySQL常用日志 服务器层日志(存储引擎层有自己的日志) 日志类型 描述 error_log(错误日志) 记录MySQL启动.运行或停止时出现的问题 general_log(常规日志) 记录所有发送…
最近在研究SQL语句的优化问题. 下面是从网上搜集的,有的地方有点老了,可是还是有很多可以借鉴的地方的. 如何加快查询速度? 1.升级硬件. 2.根据查询条件,建立索引,优化索引.优化访问方式,限制结果集的数据量. 3.扩大服务器的内存. 4.增加服务器CPU个数. 5.对于大的数据库不要设置数据库自动增长,它会降低服务器的性能. 6.在查询Select语句中用Where字句限制返回的行数,避免表扫描,如果返回不必要的数据,浪费了服务器的I/O资源,加重了网络的负担降低性能.如果表很大,在表扫描…
一.数据库结构的设计 如果不能设计一个合理的数据库模型,不仅会增加客户端和服务器段程序的编程和维护的难度,而且将会影响系统实际运行的性能.所以,在一个系统开始实施之前,完备的数据库模型的设计是必须的. 在一个系统分析.设计阶段,因为数据量较小,负荷较低.我们往往只注意到功能的实现,而很难注意到性能的薄弱之处,等到系统投入实际运行一段时间后,才发现系统的性能在降低,这时再来考虑提高系统性能则要花费更多的人力物力,而整个系统也不可避免的形成了一个打补丁工程. 所以在考虑整个系统的流程的时候,我们必须…
1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. (因为在条件查询条件添加索引,会直接被检索到列,会非常的快速) 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描 (最好不要给数据库留NULL,尽可能的使用 NOT NULL填充数据库.) 例如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后…