本文主要是介绍leetcode_database简单题第一遍做后知识补充(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
下面总结来自于《SQL21天自学通》
SQL代码提速问题
全表扫描
数据库服务为执行某一个 SQL 语句需要对表中的每一个记录进行检查时就会发生全表扫描。
全表扫描通常是因为在WHERE子句中使用了索引中没有的字段时发生。
使用全表扫描的的恰当时机:
你选择了一个表中的大多数行的时候,你在对表中的每一行记录进行更新的时候,表非常小的时候
最好在大型表中使用索引
看一下SQL语句中的WHERE子句我们要问的是,是否可以加入其它的索引。如果是在下列条件下,那么答案是肯定的:
最大的限制条件返回表的数据库小于表总数据量的 10%
最大的限制条件在 SQL 语句中是经常使用的
条件列的索引将会返回一个唯一的值
列经常被ORDER BY或GROUP BY子句所引用
也可以使用复合索引,复合索引是基于表中两个或更多列的索引
在查询中各个元素的布局
在WHERE子句中,是根据解释器处理SQL语句的步骤和次序而定的,在条件中安排被索引过的列,这样的条件将会查找最少的记录。
试着调整SQL语句以使它返回的记录数最少。
根据数据库查询优化的读取顺序(技巧:请查看你的数据库文档资料,看一看解释器是如何处理你的SQL语句的),将最大的条件限制语句放在WHERE子句中最先被读到的地方。
过程
如果所使用的查询有规律可循,那么你可以试着使用过程,过程可以调用很大的一组SQL的语句。
避免使用 OR
我们发现 IN 通常比 OR 要快
提速可以使用临时表(先对原始的表进行处理,得到只含有查询所需要的字段)
OLAP与OLTP的比较
在线的分析处理OLAP的数据库是一个对最终用户的查询进行统计和汇总的系统,在这种环境下返回的数据经常用与统计报告给决策管理过程提供帮助。
在线事务过程OLTP的数据库则是一个将主要的功能提供给为最终用户输入服务的环境的系统,包括用户日复一日的查询。
OLTP系统经常用在以日为基本单位在数据库中操作数据的使用场合。
数据仓库与DSS可以从在线的事务处理数据库中得到它们所需的数据,有时也可以从其它的OLAP数据库中得到数据。
OLTP 的调试
ROLLBACK语句需要撤消的内容的量与尺寸是与当前有多少用户在访问数据库相关的。
最好的办法是在一个事务处理的环境中有多个ROLLBACK命令。
事务历史记录的完整性,它在每一个事务结束后都会写出。LOGS是为恢复的目的而存在的。
事务记录也会涉及到性能,因为对记录的备份是额外的负荷。
OLAP 的调试
它需要较大的空间用以进行分类
获得有用的用以决策的数据
对于 SQL 语句和数据库而言的一个重要的性能因素是处理的类型和它在数据库中所占
用的空间 一种处理类型为 OLTP
这篇关于leetcode_database简单题第一遍做后知识补充(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!