DB——索引原理

深入浅出数据库索引原理

以前对索引的概念很模糊,今天看了上面这篇博文大致给了解一下。
随便总结一下
索引的优点:优化查询速度
索引的缺点:因为每次写入数据时索引都需要重新整理导致数据库开销大,创建的索引等于是将索引字段复制了一部分所以存储消耗也相应的增大。
索引的分类:聚集索引 非聚集索引
非/聚集索引区别:通过非聚集索引可以查询到对应的主键值,然后使用主键值通过聚集索引查找对应的数据对像。
主键:

  • 保护实体的完整性
  • 加快数据库的操作速度
  • 添加记录时,dbms自动检查记录的主键,确保不会重复
  • 默认按主键值顺序显示数据

主键在数据库中其实就是一个聚集索引,标识了某一行一列或多列的数据,代表了表结构的完整性。加了主键的表就相当于将整个表变成了一个索引,
在这里插入图片描述
查询语句(主键为id字段)

  • select age from table where id = 10; 此语句会根据聚集索引查找到目标对象然后返回对象的age字段
  • select age from table where name='云';此语句会遍历数据表匹配name字段为云的对象然后给出age字段
    创建索引字段
    create index index_name on tablename(name);
    创建双字段覆盖索引
    create index index_name_and_age on (name,age);
    覆盖索引可以直接通过非聚集索引查找到另一字段信息,省去了通过主键查找的步骤。

关于sql查询语句优化方法

  • 避免where子句中使用 != 或 <>等操作符(否则引擎放弃使用索引而进行全局扫描)
  • 考虑在where及order by 涉及列上建立索引,避免全表扫描
  • 避免where子句对字段进行null值判断,可以在考虑设默认值
  • 避免在where子句中使用or来连接条件
    eg:select id from tb where num=10 or num=20;
    select id from tb where num=10 union all select id from tb where num=20;
  • 能用between不要用 in not in
  • 尽量避免where子句中使用函数,避免where子句=左侧进行运算
  • exists替换in
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值