• MYSQL索引的作用和创建


    索引是查询优化最主要的方式;

    查询方式:

    一种是:全表扫描;

    一种是:利用数据表上建立的所以进行扫描。

    如:对表中name字段建立索引;则按照表中name字段进行索引排序,并为其建立指向数据表中记录所在位置的“指针”。

    Mysql索引根据用途分为:

    1.普通索引:列值可以取空值或重复值。创建使用关键字INDEX或KEY;

    2.唯一索引:列值不能重复;即索引列值必须是唯一的,但可以是空值;创建使用关键字UNIQUE;

    3.主键索引:主键索引是系统自动创建的主键索引,并且是唯一的。与唯一索引区别是;列值不能为空

    4.聚簇索引:就是数据存储的物理存储顺序,非聚簇索引就是索引顺序与数据的物理顺序无关。一个表只能有一个聚簇索引。目前只有InoDB和solidDB支持。

    5.全文索引:只能创建在varchar或text的列上;建立全文索引能够在全文索引的列上进行查找。

    (1)单列索引:就是一个索引只包含表中的一个列;比创建一个学号ID的索引;以name再创建一个姓名的单列索引。即每个索引包含一个列。

    (2)组合索引(复合索引或多列索引):就是表中的两个列或多个列来创建成一个索引;比如;以用户ID、用户名Name、用户年龄Age来创建的索引就是联合索引。

    排序规则是;左前缀原则:即先按照用户ID,排序后;当第一列值相同的情况下;则按照用户名Name第二列判刑;依次类推。

    CREATE TABLE `ik_admin` (
    `userid` int(11) NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    `username` varchar(50) NOT NULL,
    `password` varchar(256) NOT NULL,
    `role_id` smallint(5) NOT NULL,
    `last_ip` varchar(20) NOT NULL,
    `last_time` int(10) NOT NULL DEFAULT '0',
    `email` varchar(64) NOT NULL,
    `status` tinyint(1) NOT NULL DEFAULT '1',
    PRIMARY KEY (`userid`), #表示主键默认是索引;而且不允许为空
    UNIQUE KEY `user_name` (`username`) #唯一索引;改列不能重复;但可以为空
    ) ENGINE=MyISAM AUTO_INCREMENT=1002 DEFAULT CHARSET=utf8 COMMENT='管理员';

    6.创建表索引语句:

     

     1 drop TABLE if exists my_test;
     2 create table my_test(
     3     id int(11) not null unique auto_increment,
     4     name varchar(10) not null default 0,
     5   age int(11) not null default 0
     6 ) engine=innodb charset=utf8;
     7 
     8 #查看表my_test的全部索引
     9 show index from my_test;
    10 
    11 #创建索引
    12 create index index_n on my_test(name); #为表my_text中的列name创建普通索引名称index_n
    13 create index index_age on my_test(age DESC); #为age做降序索引
    14 create index index_age_name on my_test(age,name DESC);#建立表列age和name的联合索引;按照age升序后再按照name降序排序
    15 
    16 #删除索引
    17 drop index index_n on my_test;
    18 
    19 #修改索引
    20 alter table my_test drop index index_age;#删除索引
    21 alter table my_test add index index_age(age);
  • 相关阅读:
    生活
    通俗易懂----尾递归
    。。。
    调用startActivityForResult,onActivityResult无响应的解决办法
    安卓官方ViewPager与android.support.design.widget.TabLayout双向交互联动切换 。
    1、面向对象以及winform的简单运用(开篇)
    15、C#基础整理(递归)
    14、C#基础整理(函数)
    13、C#基础整理(枚举)
    12、C#基础整理(结构体)
  • 原文地址:https://www.cnblogs.com/wanglijun/p/10908226.html
Copyright © 2020-2023  润新知