• 入门数据库Days8


    目录

     自增长

    修改默认的自增长初始值 

    索引优化

    索引机制

    索引的类型

    1.主键索引

     2.唯一索引

     3.普通索引

     4.全文索引

    索引的使用

    创建索引

     删除索引

    查询索引 

     自增长

    在某张表中,存在一个id列(整数) ,我们希望在添加记录的时候,该列从1开始,自动的增长

    先创建一个t34表

    1. CREATE TABLE t34(
    2. id INT PRIMARY KEY AUTO_INCREMENT,
    3. email VARCHAR(32) NOT NULL DEFAULT ' ',
    4. `name` VARCHAR(32) NOT NULL DEFAULT ' ');

    添加数据:

    1. INSERT INTO t34
    2. VALUES(NULL,'tom.com','tom');
    3. INSERT INTO t34
    4. (email,`name`) VALUES('hsp.com','hsp');

     这里第二行的id->2是自动加的(自增长)

    使用细节:

    1. 一般来说自增长是和primary key 配合使用的
    2. 自增长也可以单独使用[但是需要配合一个unique]
    3. 自增长修饰的字段为整数型的(虽然小数也可以但是非常非常少这样使用)
    4. 自增长默认从1开始,你也可以通过如下命令修改alter table 表名 auto_increment =新的值
    5. 如果你添加数据时,给自增长字段(列)指定的有值,则以指定的值为准,如果指定了自增长,一般来说,就按照自增长的规则来添加数据

    修改默认的自增长初始值 

    1. ALTER TABLE t33 AUTO_INCREMENT =100
    2. CREATE TABLE t33(
    3. id INT PRIMARY KEY AUTO_INCREMENT,
    4. email VARCHAR(32) NOT NULL DEFAULT ' ',
    5. `name` VARCHAR(32) NOT NULL DEFAULT ' ');
    6. INSERT INTO t33
    7. VALUES(NULL,'tom.com','tom');
    8. INSERT INTO t33
    9. (email,`name`) VALUES('hsp.com','hsp');
    10. SELECT * FROM t33;

     

     

    如果给第二条默认值改为666,则第二行是从666开始自增长(666优先级高一些),第三行一般情况就会是667 

    索引优化

    说起提高数据库性能,索引是最物美价廉的东西了。不用加内存,不用改程序,不用调sql,查询速度就可能提高百倍千倍。

    加入数据库里有800万个数据,在没有创建索引时,查询一条记录需要的时间相对来说比较长

    由于得创建太多数据来演示一个例子不太方便,这里作为笔记直接记方法

    如果查询emp数据库的数据empno,用索引的方法

    先创建一个索引empno_index

    CREATE INDEX empno_index ON emp(empno)
    
    1. SELECT * FROM emp
    2. WHERE empno=12345678;

    然后写第二个语句即可

    注意:

    • 索引本身会占用空间
    • 创建索引后,只对创建了索引的列有效

    索引机制

    例如在这个表里查找id为1的数据,就算第一遍查找到了还是得继续查找,因为后面也可能有也可能没有,在没有创建索引的条件下查询很费时间。

    如果创建了索引,就相当于一个在二叉搜索树里去查找

     索引的代价:

    • 磁盘占用(上面提到过)
    • 对dml(update delete insert)语句的效率影响

    索引的类型

    1.主键索引

    主键索引:主键自动的为主索引

     

     

     2.唯一索引

     3.普通索引

     第二种

     4.全文索引

    全文索引(FULLTEXT)[适用于MylSAM]

    开发中考虑使用:全文搜索 Solr 和  ElasticSearch (ES)

    索引的使用

    创建索引

    1. CREATE TABLE t55
    2. ( id INT,
    3. `name` VARCHAR(32));
    4. -- 添加索引
    5. -- 添加唯一索引
    6. CREATE UNIQUE INDEX id_index ON t55(id);
    7. SHOW INDEXES FROM t55;

    这里的0代表否,非唯一索引吗->否,代表有唯一索引

     如何选择?

    1. 如果某列的值,是不会重复的,则优先考虑使用unique索引,否则使用普通索引

     删除索引

     

     删除主键索引不用指定是哪一列,因为一张表最多一个主键索引

    修改索引是先删除,在添加新的列

    查询索引 

    总结:在哪些列上适合使用索引

    1. 较频繁的作为查询条件字段应该创建索引     select * from emp where empno=1
    2. 唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件    select * from emp where sex=`男`
    3. 更新非常频繁的字段不适合创建索引
    4. 不会出现在WHERE子句中字段不该创建索引

    以上为今天的视频笔记,如有侵权请联系我删除.

    学习如逆水行舟,不进则退。和小吴一起加油吧!

  • 相关阅读:
    从零开始之了解电机及其控制(11)实现空间矢量调制
    AJAX学习日记——Day 3
    数商云SCM供应链协同系统:招标功能亮点|构建数字化采购体系降低汽车零部件成本
    openstack部署2
    (论文阅读51-57)图像描述3 53
    C语言-静态通讯录(全功能)(详略版)
    万字长文:我眼中区块链各赛道正在演进的技术趋势
    杂牌行车记录仪mp4恢复案例
    使用 VS 2022 开发C#项目的tips
    【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression
  • 原文地址:https://blog.csdn.net/Wuweihendidiao/article/details/126703578