MySQL事务和索引详细基础语句
2020-05-04 本文已影响0人
司徒新新
事务
-- 事务 模拟A向B转账 必须A扣完 B加完 两部都完成了才算完成 否则失败
SET autocommit = 0; -- 关闭事务
START TRANSACTION -- 开启一个事务 (一组事务)
UPDATE account SET money = money - 500 WHERE `name` = 'A' -- A减500
UPDATE account SET money = money + 500 WHERE `name` = 'B' -- B减500
COMMIT; -- 提交事务,事务就被持久化了
ROLLBACK; -- 回滚
SET autocommit = 1; -- 恢复默认值
索引
-- 索引
SHOW INDEX FROM student; -- 显示全部索引信息
ALTER TABLE school.student ADD FULLTEXT INDEX `email`(`email`); -- 增加一个全文索引(索引名) 列名
-- EXPLAIN 分析SQL执行的情况
EXPLAIN SELECT * FROM student; -- 非全文索引
SELECT * FROM student WHERE MATCH(email) AGAINST('com');
-- 测试
-- id _ 表名 _ 字段名
-- CREATE INDEX 索引名 ON 表(字段)
CREATE INDEX id_student_name ON student(`name`); -- 给表的name字段 添加索引
SELECT * FROM student WHERE `name` = 'xinxin'; -- 正常查询
EXPLAIN SELECT * FROM student WHERE `name` = 'xinxin'; -- 根据索引查询
索引在小的数据量的时候区别不大,但是在数据量大的时候,区别十分明显!!!
索引需要注意的(原则)
- 索引不是越多越好.
- 不要对经常变动的数据加索引.
- 小数据量不需要加索引.
- 索引一般加在常用来查询的字段上.
建议查看索引的数据结构.