数据库中Sql的优化方案
前言
面试当中经常问到对于数据库的优化有哪些方案,或者想法之类的,问题有点大,一时想到好多,往往让人不知道如何回答。自己整理一些自己对于查询优化方面的思考,方便后续扩展和记忆。有不对的方面,希望大家指出,在此表示感谢!
sql查询优化
对于查询大的可以分为单表查询和多表联合查询,各自需要考虑的因素略有不同。
单表查询
创建合适的索引,并让索引奏效。
注:
①索引失效的场景参考文章:
https://blog.csdn.net/weixin_36586564/article/details/79641748
自己的总结:
比如为B+树索引时,让查询从左到右(索引的有序性导致不会全表扫描)而不是从上到下(全表扫描)
②MySQL目前主要有以下几种索引类型:
1.普通索引
2.唯一索引
3.主键索引
4.组合索引
5.全文索引
多表联合查询
生成笛卡尔积的过程的优化
①生成笛卡尔积时快一点(关联列为索引,可以提高多张表对应列匹配的速度)
②生成的笛卡尔积小一点(关联之前各关联表中数据的过滤)
生成笛卡尔积之后的优化
①索引的有效性,包括联合联合索引之类的
②中间表(对于实时性不高的数据可以通过定时任务、存储过程、监听器之类的生成中间表)
③如果事oracle数据库,可以并行执行某个语句
整个数据库的瓶颈是:io(物化视图),网络、cpu(Oracle中的并行)可以考虑在这方面优化
量变引起质变,这就是我所理解的因果。

浙公网安备 33010602011771号