数据库性能优化
https://blog.csdn.net/yzllz001/article/details/54848513
1. 建立正确的索引。
为主键、外键、执行频率高的字段组合建立索引(太多占用空间 太少访问量大)
2. 形成良好查询规范。
只通过索引访问数据、只返回需要的字段、减少比较操作(like模糊查询)、合理使用排序分组算法。
- 不要动不动就select*
- 对于如:select id,name from company where type=‘2’;
如果这个SQL经常使用,我们可以在type,id,name上创建组合索引:create index my_comb_index on company(type,id,name);
3. 优化SQL执行计划。
(选用正确的优秀算法来提高sql性能)
4. 数据分页处理。
一般数据分页方式有:
4.1.1、客户端(应用程序或浏览器)分页
将数据从应用服务器全部下载到本地应用程序或浏览器,在应用程序或浏览器内部通过本地代码进行分页处理(如利用application等进行浏览器端的缓存。参考:https://blog.csdn.net/s11show_163/article/details/112688560)
优点:编码简单,减少客户端与应用服务器网络交互次数
缺点:首次交互时间长,占用客户端内存
适应场景:客户端与应用服务器网络延时较大,但要求后续操作流畅,如手机GPRS,超远程访问(跨国)等等。
4.1.2、应用服务器分页
将数据从数据库服务器全部下载到应用服务器,在应用服务器内部再进行数据筛选。以下是一个应用服务器端Java程序分页的示例:
List list=executeQuery(“select * from employee order by id”);
Int count= list.size();
List subList= list.subList(10, 20);
优点:编码简单,只需要一次SQL交互,总数据与分页数据差不多时性能较好。
缺点:总数据量较多时性能较差。
适应场景:数据库系统不支持分页处理,数据量较小并且可控。
4.1.3、数据库SQL分页
采用数据库SQL分页需要两次SQL完成
一个SQL计算总数量
一个SQL返回分页后的数据
优点:性能好
缺点:编码复杂,各种数据库语法不同,需要两次SQL交互。
Innodb,聚簇索引和非聚簇索引区别
聚簇索引和非聚簇索引 很详细,通俗易懂:https://blog.csdn.net/s11show_163/article/details/118647446
为什么用 b+ 树而不是 b树,红黑树
https://blog.csdn.net/s11show_163/article/details/113484934
一千万条数据,问 b+ 数大概多高
https://blog.csdn.net/s11show_163/article/details/113484934
在设计联合索引需要注意什么
联合索引最左原则的底层原理
mysql 的 MVCC 以及是否解决幻读
手写sql,实现一个 按时间降序的分页查询
redo log,bin log,undo log
标题数据库中有两个关联列,请问在搜索时,这两个关联列会怎样?
- 存储引擎,索引的类别和区别
- 事务的隔离等级,可重复读的实现
-
- 数据库问到经典问题,何时该使用索引,
- 隔离级别以及各自解决的问题(脏读、不可重复读、幻读等);
- mySQL中怎么提升表的搜索速度?(索引、优化查询性能、调整内部变量)
https://www.cnblogs.com/tsflying/articles/2689143.html
29. 聊聊mysql与MongoDB
34. MongoDB更新document结构,那之前加入的数据会怎么样?
32. MC算法原理