zoukankan      html  css  js  c++  java
  • 索引

    索引

    b+树

    ​ 平衡树(btree-balance tree) 能够让查找某一个值经历的查找速度尽量平衡
    ​ 分支节点不存储数据 -- 让树的高度尽量矮,让查找一个数据的效率尽量的稳定
    ​ 在所有叶子结点之间加入了双向的地址链接 -- 查找范围非常快

    两种索引的差别
    聚集索引 聚簇索引
    Innodb 必有且仅有一个 :主键
    非聚集(簇)索引 辅助索引

    数据库使用的时候有什么注意事项
    从搭建数据库的角度上来描述问题
    建表的角度上
    1.合理安排表关系
    2.尽量把固定长度的字段放在前面
    3.尽量使用char代替varchar
    4.分表: 水平分,垂直分
    使用sql语句的时候
    1.尽量用where来约束数据范围到一个比较小的程度,比如说分页的时候
    2.尽量使用连表查询而不是子查询
    3.删除数据或者修改数据的时候尽量要用主键作为条件
    4.合理的创建和使用索引
    1.查询的条件字段不是索引字段
    对哪一个字段创建了索引,就用这个字段做条件查询
    2.在创建索引的时候应该对区分度比较大的列进行创建
    1/10以下的重复率比较适合创建索引
    3.范围
    范围越大越慢
    范围越小越快
    like 'a%' 快
    like '%a' 慢
    4.条件列参与计算/使用函数
    5.and和or
    多个条件的组合,如果使用and连接
    其中一列含有索引,都可以加快查找速度
    如果使用or连接
    必须所有的列都含有索引,才能加快查找速度
    6.联合索引 : 最左前缀原则(必须带着最左边的列做条件,从出现范围开始整条索引失效)
    (id,name,email)
    select * from s1 where id = 1800000 and name = 'eva' and email = 'eva1800000@oldboy';
    select * from s1 where id = 1800000 and name = 'eva';
    select * from s1 where id = 1800000 and email = 'eva1800000@oldboy';
    select * from s1 where id = 1800000;
    select * from s1 where name = 'eva' and email = 'eva1800000@oldboy';
    (email,id,name)
    select * from s1 where id >10000 and email = 'eva1800000@oldboy';
    7.条件中写出来的数据类型必须和定义的数据类型一致
    select * from biao where name = 666 # 不一致
    8.select的字段应该包含order by的字段
    select name,age from 表 order by age; # 比较好
    select name from 表 order by age; # 比较差

  • 相关阅读:
    python-web自动化环境安装
    python-单元测试优化,加入日志
    小谢第17问:三目运算符嵌套使用方法
    小谢第16问:1到6000的正整数正则表达式怎么写?
    小谢第15问:5到60的正整数正则表达式怎么写?
    小谢第14问:多个if语句和else if有什么区别?
    小谢第13问:输入框绑定回车enter事件自动刷新页面
    小谢第12问:初始化页面的时候子组件为什么不渲染?
    小谢第11问:vue中,子组件获取的值怎么传给父组件
    小谢第10问:前端JS下载文件、表格
  • 原文地址:https://www.cnblogs.com/wyh0717/p/13408847.html
Copyright © 2011-2022 走看看