索引
CREATE INDEX idx_state ON customers (state);
-- CREATE INDEX 索引名(idx_列名) ON 表名 (列名);
EXPLAIN SELECT customer_id FROM customers WHERE state = 'CA';
-- 解释性查询
-- 查看索引
ANALYZE TABLE customers;
-- 有这句才能得到精确的Cardinality
SHOW INDEXES IN customers;
-- 删除索引
DROP INDEX idx_state ON customers;
前缀索引
CREATE INDEX idx_lastname ON customers (last_name(20));
最佳字符数
SELECT
COUNT(DISTINCT LEFT(last_name, 1)),
COUNT(DISTINCT LEFT(last_name, 5)), -- 最佳
COUNT(DISTINCT LEFT(last_name, 10))
FROM customers
全文索引
CREATE FULLTEXT INDEX idx_title_body ON posts (title, body);
-- 模糊搜索
SELECT *,MATCH(title, body) AGAINST('react redux')
-- 可以得到相关性
FROM posts
WHERE MATCH(title, body) AGAINST('react redux');
-- 布林模式
WHERE MATCH(title, body) AGAINST('react -redux +form' IN BOOLEAN MODE);
WHERE MATCH(title, body) AGAINST('"handling a form"' IN BOOLEAN MODE); -- 精度搜索
组合索引
CREATE INDEX idx_state_points ON customers (state, points);
原则:将最常使用的列放在前面,将Cardinality最大的列放在前面。
用户
创建用户
CREATE USER john IDENTIFIED BY '1234'
-- 无限制,可从任何位置访问
CREATE USER john@127.0.0.1;
-- 限制ip地址,可以是特定电脑,也可以是特定网络服务器(web server)
CREATE USER john@localhost;
-- 限制主机名,特定电脑
CREATE USER john@'codewithmosh.com';
-- 限制域名(注意加引号),可以是该域名内的任意电脑,但子域名则不行
CREATE USER john@'%.codewithmosh.com';
-- 加上了通配符,可以是该域名及其子域名下的任意电脑
查看和删除用户
SELECT * FROM mysql.user;
DROP bob@codewithmosh.com;
修改密码
SET PASSWORD FOR john = '1234';
-- 修改john的密码
SET PASSWORD = '1234';
-- 修改当前登录账户的密码
在 Administration 标签页 Users and Privileges 里,点击用户 john,可修改其密码,还可以点击 Expire Password 强制其密码过期,下次用户登录必须修改密码。
权限
分配权限
GRANT SELECT, INSERT, UPDATE, DELETE, EXECUTE
ON sql_store.*
-- *代表可访问某数据库所有表
-- 如果是 *.*,则代表所有数据库的所有表或整个服务器
TO moon_app;
查看权限
SHOW GRANTS FOR john;
SHOW GRANTS;
收回权限
REVOKE CREATE VIEW
ON sql_store.*
FROM moon_app;
最后,恭喜我结束课程了!