1. 索引声明与使用

    MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。
    从功能逻辑上说,索引主要有 4 种,分别是普通索引、唯一索引、主键索引、全文索引。
    按照物理实现方式,索引可以分为 2 种:聚簇索引和非聚簇索引。
    按照作用字段个数进行划分,分成单列索引和联合索引。
    1) 创建表的时候创建索引

    1. CREATE TABLE book(
    2. book_id INT ,
    3. book_name VARCHAR(100),
    4. authors VARCHAR(100),
    5. info VARCHAR(100) ,
    6. comment VARCHAR(100),
    7. year_publication YEAR,
    8. // 声明索引
    9. INDEX(book_name)
    10. );
    11. // 查看索引
    12. SHOW INDEX FROM book;
    1. CREATE TABLE test1(
    2. id INT NOT NULL,
    3. name varchar(30) NOT NULL,
    4. UNIQUE INDEX uk_idx_id(id) // id唯一,但可以添加为null
    5. );
    1. CREATE TABLE student (
    2. id INT(10) UNSIGNED AUTO_INCREMENT ,
    3. student_no VARCHAR(200),
    4. student_name VARCHAR(200),
    5. PRIMARY KEY(id)
    6. );
    7. // 删除主键索引
    8. ALTER TABLE student
    9. drop PRIMARY KEY ;
    1. CREATE TABLE test2(
    2. id INT NOT NULL,
    3. name CHAR(50) NULL,
    4. INDEX single_idx_name(name)
    5. );
    1. CREATE TABLE test3(
    2. id INT(11) NOT NULL,
    3. name CHAR(30) NOT NULL,
    4. age INT(11) NOT NULL,
    5. info VARCHAR(255),
    6. INDEX multi_idx(id,name,age)
    7. );
    1. // 只能在 CHAR VARCHAR TEXT列创建
    2. CREATE TABLE test4(
    3. id INT NOT NULL,
    4. name CHAR(30) NOT NULL,
    5. age INT NOT NULL,
    6. info VARCHAR(255),
    7. FULLTEXT INDEX futxt_idx_info(info(50)) // 拿前五十个构建索引
    8. ) ENGINE=MyISAM;
    1. CREATE TABLE test5(
    2. geo GEOMETRY NOT NULL,
    3. SPATIAL INDEX spa_idx_geo(geo)
    4. ) ENGINE=MyISAM;
    1. 在已经存在的表上创建索引
      1. ALTER TABLE table_name ADD [UNIQUE | FULLTEXT | SPATIAL] [INDEX | KEY]
      2. [index_name] (col_name[length],...) [ASC | DESC]
      1. CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
      2. ON table_name (col_name[length],...) [ASC | DESC]