zoukankan      html  css  js  c++  java
  • mysql数据库优化课程---5、要索引和不要索引的区别是什么

    mysql数据库优化课程---5、要索引和不要索引的区别是什么

    一、总结

    一句话总结:

    索引速度快,就是查表的时候,操作的话设置索引就好了

    1、数据库设计的时候不允许字段为null的好处是什么?

    null要占4-5个字段:单为空的时候,不允许为null的话要么为0要么为空字符串,占一个字段

    而null要占4-5个字段,所以用null做划不来

    2、为什么数据表的外键使用的很少?

    a、非常不灵活,当你想删某个字段的时候,会出现因为是外键删除报错很麻烦
    b、外键的功能完全可以被连表所代替
    c、和实际情况不符合:比如说一个用户最近乱发帖,你需要删了它,但是如果设置为外键,需要把用户所有的评论文章全部删掉,而这些评论文章没有必要全部删掉

    所以外键这种太强制的约束用的少

    3、删除主键之前的操作是什么?

    先要把自增删了才能删主键,因为自增是字段属性

    一个表只能有一个主键

    alter table user2 modify id int unsigned not null;(删自增)
    alter table user2 drop primary key;(删主键)

    4、索引如何使用?

    检索在查询的时候自己使用,而不需要我们做什么特别的操作来体现,我们要做的就是初期给哪些字段加上索引,加上什么索引

    索引作用:检索加速

    5、索引里面的唯一索引是什么?

    就是数据库里面这个字段不能重复,重复就报错
    添加了唯一索引,那么就可以快速检索这个字段了

    1)添加
    alter table user2 add unique u_username(username);

    2)删除
    alter table user2 drop index u_username;

    6、主键索引和唯一索引的关系?

    主键索引本身就包含唯一索引,所以主键索引中也不能重复,比如id,重复就报错

    主键索引检索速度最快

    唯一索引会比普通索引快

    7、如何查看一个数据表user的字段情况?

    desc user;

    8、程序中的唯一索引检测出现的位置在哪(在php中检测还是在mysql中唯一索引)?

    php中:是判断重复了php给出提示,而不是在mysql中唯一索引报错

    应该在php中检测,而不是mysql中的唯一索引,

    是判断重复了php给出提示,而不是在mysql中唯一索引报错

    9、普通索引在数据库中的字段表示是什么?

    普通索引:mul
    主键索引:pri
    唯一索引:uni

    1)添加
    alter table user2 add index i_username(username);

    2)删除
    alter table user2 drop index i_username;

    10、要索引和不要索引的区别是什么?

    要索引检测速度快,就是查表的时候

    而不需要做什么特别操作啦体现索引

    二、内容在总结中

    字段管理:
    1.添加字段
    alter table user add age tinyint unsigned not null;
    alter table user add pass varchar(30) not null after user;
    alter table user add pass varchar(30) not null first;

    2.删除字段
    alter table user drop password;

    3.修改字段
    alter table user modify username varchar(30) not null;
    alter table user change username user varchar(30) not null;

    4.查看字段
    desc user;

    索引:
    1.主键
    1)添加
    mysql> create table user2(
        -> id int unsigned not null auto_increment,
        -> username varchar(30) not null,
        -> primary key(id)
        -> );

    mysql> create table user2(
        -> id int unsigned not null auto_increment primary key,
        -> username varchar(30) not null
        -> );

    2)删除
    alter table user2 modify id int unsigned not null;
    alter table user2 drop primary key;

    2.唯一
    1)添加
    alter table user2 add unique u_username(username);

    2)删除
    alter table user2 drop index u_username;

    3.普通
    1)添加
    alter table user2 add index i_username(username);

    2)删除
    alter table user2 drop index i_username;

     
  • 相关阅读:
    Oracle 在64位机器上使用plSQL连接Oracle的问题(SQL*Net not properly installed)
    Bytes to be written to the stream exceed the Content-Length bytes size specified 解决方法
    Eclipse下建立geoserver源码工程
    (转)HttpWebRequest以UTF-8编码写入内容时发生“Bytes to be written to the stream exceed the Content-Length bytes size specified.”错误
    为nginx创建windows服务自启动
    (转)Nginx反向代理设置 从80端口转向其他端口
    从SNE到t-SNE再到LargeVis
    K NEAREST NEIGHBOR 算法(knn)
    从0开始用python实现神经网络 IMPLEMENTING A NEURAL NETWORK FROM SCRATCH IN PYTHON – AN INTRODUCTION
    Python和数据科学的起步指南
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9751122.html
Copyright © 2011-2022 走看看