zoukankan      html  css  js  c++  java
  • 数据库索引(转载)

    原文地址:https://my.oschina.net/gooke/blog/678556

    以下内容为个人笔记:)


    场景:

    有张数据表employee,里面有3列Employee_Name,Employee_Age,Employee_Address,有上万行的记录

    现在想找出叫Jesus的员工:

      SELECT * FROM Employee WHERE Employee_Name = 'Jesus'

    没有索引的话

    数据库会逐行遍历整张表,找Employee_Name = 'Jesus'的员工,并且找到了也不会停止,做全表扫描

    索引:
    ~~索引就是数据结构~~

    索引是基于数据表中的某一列创建的,并且这些数据存储在某个数据结构中。

    使用哪种数据结构呢?

    B- 树是用于索引最常见的数据结构(高效、有序...)。但也可以自己指定。

    HASH索引也不错,对于比较字符串很快,但一定范围的做不到。R- 树索引通常用来解决空间问题。

    索引为啥能提高效率呢

    索引的本质是 存储列值的数据结构。像B-树的数据结构,是有序的,会把列值按字母顺序排序,所以大大的缩减了查找时间。

    索引里还存了些啥

    列值+对应行的指针

    数据库咋知道啥时候使用索引

    数据库会自己判断,首先判断这个列有没有设置索引,再判断值不值的用(比如有些时候做全表扫描要比使用数据库索引高效)。

    当然啦也可以强迫数据库使用索引

    如何创建索引

    CREATE INDEX name_index ON Employee (Employee_Name)

    联合索引:CREATE INDEX name_index ON Employee (Employee_Name, Employee_Age)

    使用索引的代价

    占空间+影响数据库性能(索引的值要与数据库保持一致,所以只要对表做了增删改,在索引上也要来一遍)

  • 相关阅读:
    支付宝支付-扫码支付
    安装agent
    设置微服务环境变量脚本
    曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的
    matlab文件拷贝
    hive优化之调整mapreduce数目
    软件测试面试题
    wtforms第三方校验库
    flask貌似可以学习和参考的网站
    flask 接受(获取)url 请求的参数 的方法 和 表单 post过来的数据
  • 原文地址:https://www.cnblogs.com/mogujiang/p/7778157.html
Copyright © 2011-2022 走看看