索引的功能:
约束---主键、外键、唯一、普通、联合
加速查找
原理:索引数据库专门用于查找数据的一种数据结构,类似字典中的目录,查找字典内容时可以根据目录查找数据的存放位置。然后直接获取。
索引的代价:创建一个索引,会多生成一个文件。创建索引后,在插入、更新、删除等操作时,不仅会对原始表进行操作、而且还要对索引表进行操作。如果数据量很大,创建索引也要大量的时间。
普通索引----加速查找
create TABLE tb1( id int PRIMARY KEY auto_increment, name VARCHAR(20) index ix_name (name) )
或者
create index 索引名 on 表名 (列名)
删除索引 drop 索引名 on 表名
查看索引 show index from 表名
唯一索引----加速查找,约束列数据不能重复,只能有一个null
create unique index 索引名 on 表名 (列名)
主键索引-----一般列设置为主键后,MYSQL就会自动生成一个主键索引
组合索引------联合唯一,加速查找,约束列不能重复,多列创建一个索引文件
普通组合索引 create index 索引名 on 表名 (列名1,列名2)
联合唯一索引 create unique index 索引名 on 表名 (列名1,列名2)
查找方式 最左匹配,select * from 表名 where 列名1=”xxx“,这样能走索引,即如果2列设置索引,在查找的时候会按照左边边的开始找
怎么查看当前sql是否走索引
explain SQL语句
注意事项:
避免使用select *
用count(1)或count(列)代替count(*)
能用char,就不用varchar()
组合索引代替多个单列索引
使用join来代替子查询
慢日志:
开启慢日志后,将一些查询慢的sql等写入到文件中,然后根据日志,可以优化SQL。慢日志的配置写在mysql的配置文件中。也可以直接修改内存的配置,不需要重启。
事务
事物是一个不可分割的工作单位,事物必须使数据库从一个状态切换到另一个一致性的状态,一个事物的执行不受其他事物的干扰,一个事物一旦提交,是对数据库的改变是永久性的
隐式事务:没有明显的开启和结束的标记,比如insert、update、delete
显式事务:必须有明显的开启和结束的标记(前提:必须先设置自动提交功能为禁用 set autocommit = 0)
语法:
步骤一:set autocommit = 0
start transaction(可选)
步骤二:编写事物的SQL语句(一般就是select、update、delete、insert语句)
步骤三:结束事物
commit 提交事物
rollback 回滚事物
savepoint 设置保存点 搭配rollback使用,回滚到当时的保存点处。
当同时运行多个事物,而这些事物访问数据库相同的数据时,如果没有采取隔离措施,就会导致并发问题。
脏读:
不可重复读:
幻读:
MYSQL利用隔离级别避免并发问题
标签:index,列名,索引,查找,表名,事物 From: https://www.cnblogs.com/powfu/p/16953846.html