前言:7月13号 至7月26号面试总结

比较棘手的的问题:

近来面试找工作经常会遇见这种问题: 做过数据库优化吗?大数据量基础过吗?系统反应慢怎么查询?

这时候就需要你谈一下sql优化相关的内容 ,   一下几个方面

1、慢查询

2、索引

3、拆分表

数据库索引变快
全部检索(扫描)
系统集成

二叉树算法--》索引文件   物理位置
log2N  检索10次可以检索2的10次方个数(1024)

全文索引,主要是针对对文件,文本的检索, 比如文章, 全文索引针对MyISAM有用.
select * from articles where match(title,body) against(‘database’); 【可以】

唯一索引
unique空串(null)可以放多个 如果是具体的内容则不能重复

a: 肯定在where条经常使用 
b: 该字段的内容不是唯一的几个值(sex)  (只有三个数据形成2级二叉树)
c: 字段内容不是频繁变化.

联合索引

分表、水平分割

知识点、项目

sql优化(查询9:1)
1. 尽量使用列名(Oracle9i之后, *和列名一样)
   在业务密集的SQL当中尽量不采用IN操作符,用EXISTS 方案代替。

2、模糊查询like
关键词%yue%,由于yue前面用到了“%”,因此该查询必然走全表扫描,除非必要,否则不要在关键词前加%,

3 二者都能使用尽量使用where (与having比较)
where 先过滤(数据就少了)在分组

4: 理论上,尽量使用多表连接(join)查询(避免子查询)

show status like 'uptime';
show [session|global] status like 'com_select';
show status like 'connections';
慢查询(默认10秒)
show status like 'slow_querties';

以安全模式启动

SHOW INDEX FROM emp

BTREE

20180327更新

B树:有序数组+平衡多叉树;

B+树:有序数组链表+平衡多叉树;

从上图你能看到,一个内结点x若含有n[x]个关键字,那么x将含有n[x]+1个子女

为什么说B+-tree比B 树更适合实际应用中操作系统的文件索引和数据库索引?

1)B+树的磁盘读写代价更低

B+树的内部结点并没有指向关键字具体信息的指针。因此其内部结点相对于B树更小。如果把所有同一内部结点的关键字存放在同一盘块中,那么盘块所能容纳的关键字数量也越多。一次性读入内存中的需要查找的关键字也就越多。相对来说IO读写次数也就降低了。

2) B+-tree的查询效率更加稳定

由于非终结点并不是最终指向文件内容的结点,而只是叶子结点中关键字的索引。所以任何关键字的查找必须走一条从根结点到叶子结点的路。所有关键字查询的路径长度相同,导致每一个数据的查询效率相当。

MySQL索引实现

MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。因此,MyISAM中索引检索的算法为首先按照B+Tree搜索算法搜索索引,如果指定的Key存在,则取出其data域的值,然后以data域的值为地址,读取相应数据记录。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶结点data域保存了完整的数据记录。

MyISAM的索引方式也叫做“非聚集”的

sql优化(面试必问一)相关推荐

  1. 互联网公司面试必问的mysql题目(下)

    这是mysql系列的下篇,上篇文章地址我附在文末. 什么是数据库索引?索引有哪几种类型?什么是最左前缀原则?索引算法有哪些?有什么区别? 索引是对数据库表中一列或多列的值进行排序的一种结构.一个非常恰 ...

  2. 面试必问:一文弄懂MySQL数据库索引之底层数据结构和索引类型

    面试必问:一文弄懂MySQL数据库索引之底层数据结构和索引类型 前言 一.索引 1.1作用 1.2特点 1.3使用 1.3.1创建索引 1.3.2删除索引 1.3.3查看表中的索引 1.3.4查看SQ ...

  3. 看完946页“JAVA高级架构面试必问”,金九银十社招全拿下

    前言 我本科毕业后在老东家干了两年多,老东家算是一家"小公司"(毕竟这年头没有 BAT 或 TMD 的 title 都不好意思报出身),毕业这两年多我也没有在大厂待过,因此找坑的时 ...

  4. 互联网公司面试必问的Redis题目

    https://juejin.im/post/5b99d4bce51d450e7a24b66e#heading-0 Redis是一个非常火的非关系型数据库,火到什么程度呢?只要是一个互联网公司都会使用 ...

  5. 面试必问的 CAS ,要多了解

    转载自 面试必问的 CAS ,要多了解 前言 CAS(Compare and Swap),即比较并替换,实现并发算法时常用到的一种技术,Doug lea大神在java同步器中大量使用了CAS技术,鬼斧 ...

  6. 互联网公司面试必问的mysql题目(上)

    又到了招聘的旺季,被要求准备些社招.校招的题库. 介绍:MySQL是一个关系型数据库管理系统,目前属于 Oracle 旗下产品.虽然单机性能比不上oracle,但免费开源,单机成本低且借助于分布式集群 ...

  7. Android系统框架-Androi的面试必问部分

    "Android系统框架"-Androi的面试必问部分 安卓系统框架层的详解: 首先我们先看看框架结构图: 通过图片可知,从上到下分为了四层:"应用程序"层-& ...

  8. 【Android面试】Android中高级开发面试必问,7年外包一飞冲天

    Andorid 开发在前两年也非常火热,但随着客户端开发招聘回归理性,行业已经越来越成熟,岗位招聘也就自然而然地变"卷"了.这一点,身为程序员老鸟的我深有体会. 年初,我就开始投递 ...

  9. 面试必问的CAS,你懂了吗?

    微信搜索[程序员囧辉],关注这个坚持分享技术干货的程序员. 我的最新文章:BAT 老兵的经验之谈,成长路上这个道理越早知道越好 目录 概述 案例 CAS是什么? 源码分析 intel手册对lock前缀 ...

  10. Android面试必问框架原理

    Android面试必问框架原理 volatile的实现原理 synchronized的实现原理 join方法实现原理 CAS无锁编程的原理 ReentrantLock的实现原理 AQS的大致实现思路 ...

最新文章

  1. Scala --- 第三章 数组相关操作
  2. JavaScript历史状态管理
  3. 先用knn对数据集进行预处理再利用神经网络对数据集进行分类_数据挖掘的预处理方法:综述...
  4. python把单词拆成字母_如何在Python里把独立字母组成单词
  5. Mongodb和redis书籍调研
  6. python3接口自动化测试_【python3+request】python3+requests接口自动化测试框架实例详解教程...
  7. MDT2010部署之二配置MDT2010
  8. java字符连接字符串数组_Java中连接字符串的最佳方法
  9. 【大牛系列教学】靠着这份面试题跟答案
  10. [你必须知道的.NET] 第七回:品味类型---从通用类型系统开始
  11. MediaExtractor的使用
  12. 【sklearn第八讲】广义线性模型
  13. vue样式初始化_Vue 中的样式绑定
  14. 使用CSS3关键帧动画创建的动态通知气泡
  15. 突破网吧限制的安全技术(转)
  16. python if并列条件_Python中if有多个条件怎么办
  17. WIN32,GetBitmapBits与GetPixel
  18. Mac无法开机?别着急看这里
  19. cpu性能天梯图2022
  20. Wireshark抓包数据

热门文章

  1. 【Hadoop】P2 Hadoop简介
  2. 合并单元格后打字换行_excel中合并了单元格以后往里面打字如果打两行字,怎么换行...
  3. 基于Vision Transformer的图像去雾算法研究与实现(附源码)
  4. 域名通过ipv6解析SSL协议无法访问
  5. 【20220114】【信号处理】什么是基线漂移/趋势项?如何消除?
  6. GMap.NET入门详细教程【2】-------- 初始化并加载一张地图
  7. 我犯了一个非常基础的错误:在对List的循环中改变了List
  8. vscode插件(个人正在用的)
  9. 人工智能 - A*算法解决迷宫问题 附源码和可视化显示
  10. 机房网络服务器维修图片,机房机柜尾纤布线图片 机房布线维护整理