• 数据库索引(转载)


    原文地址: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)

    使用索引的代价

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

  • 相关阅读:
    bootstrap基础(四)
    bootstrap基础(三)
    bootstrap基础(二)
    python @staticmethod和@classmethod
    python的数据类型可变不可变
    json.dumps()和json.loads()和eval()
    Linux如何查看端口状态
    python 同时遍历两个list
    dogedoge浏览器爬取标题
    虚拟机数据库连接Windows本地数据库
  • 原文地址:https://www.cnblogs.com/mogujiang/p/7778157.html
Copyright © 2020-2023  润新知