特性

索引

创建一:create [unique] index indexName on tableName (columnName (length) )。
   如果是CHAR,VARCHAR类型,length可以小于字段实际长度;如果是 BLOB和TEXT类型,必须指定length。

创建二:alter tableName add [unique] index [indexName] on (columnName (length) )

删除:DROP INDEX [indexName] ON mytable;

查看:SHOW INDEX FROM table_name\G

实例:

// 建表
CREATE TABLE IF NOT EXISTS staffs(
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(24) NOT NULL DEFAULT "" COMMENT'姓名',
    age INT NOT NULL DEFAULT 0 COMMENT'年龄',
    pos VARCHAR(20) NOT NULL DEFAULT "" COMMENT'职位',
    add_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT'入职事件'
) CHARSET utf8 COMMENT'员工记录表';

// 插入数据
INSERT INTO `test`.`staffs` (`name`, `age`, `pos`, `add_time`) VALUES ('z3', 22, 'manager', now());
INSERT INTO `test`.`staffs` (`name`, `age`, `pos`, `add_time`) VALUES ('July', 23, 'dev', now());
INSERT INTO `test`.`staffs` (`name`, `age`, `pos`, `add_time`) VALUES ('2000', 23, 'dev', now());

// 建立复合索引(即一个索引包含多个字段)
ALTER TABLE staffs ADD INDEX idx_staffs_nameAgePos(name, age, pos);

MySQL性能优化 索引失效

.1 最左前缀法则

a->b->c

.2 AND 是可以用到索引的 OR后面的不可以

.3 不要对索引做以下处理

.4 索引不要放在范围查询右边

.5 减少 select * 的使用

.6 like 模糊搜索

.7 order by 优化

order by 排序算法
双路排序 单路排序

.8 group by

.1 索引的种类

.2 索引的分类

.3 哪些情况需要建索引

UTF-8 utf8mb4

MySQL 的“utf8mb4”才是真正的“UTF-8”。

抄自

原文地址:https://www.cnblogs.com/ming-michelle/p/14786544.html