mosh--sql教程个⼈笔记-⾼级-索引
1.创建索引
CREATE INDEX idx_state ON customers(state);
–括号中键⼊想要放置索引的列名称
2.查看查询情况
EXPLAIN SELECT customer_id FROM customers;
3.查看索引
SHOW INDEXES IN customers;
也可以通过导航⾯板查看索引
主键 也成为了聚集索引(clustered index)
每当插⼊主键时,mysql会⾃动创建⼀个索引
每张表最多有⼀个聚集索引
4.⽣成表的统计信息
ANALYZE TABLE customers;
5.⼆级索引(secondary indexes)
创建⼆级索引时,mysql⾃动将id或主键纳⼊到⼆级索引中
mysql中的⼤多数索引都以⼆进制树存储
每当为两张表创建⼀组关系时,mysql会⾃动为外键创建索引,这样可以快速链接表。
6.前缀索引
CREATE INDEX ixd_lastname ON customers (last_name(20))
–在括号中可以指定索引中要包含的字符数,对于CHAR和VARCHAR括号中的内容是可选的,但TEXT和BLOB列就必须要写了7. 全⽂索引
CREATE FULLTEXT INDEX idx_title_body ON posts (title,body);
SELECT *
FROM posts
WHERE MARCH(title,body)*--全⽂索引中有⼏列,就必须将⼏列都包含在内*
AGAINST(‘react redux’) --输⼊搜索短语
会返回所有标题或正⽂中包含⼀个或这两个关键字的⽂章,这些单词可以按任何顺序排列,也可以被⼀个或多个单词分隔。
全⽂搜索的⼀个优点是,它包含了“相关性得分”,mysql会基于若⼲因素,为包含了搜索短语的每⼀⾏计算相关值得分。
相关值得分是⼀个介于0到1的浮点数,0表⽰没有相关性
结果是按照相关性得分降序排序的
8.全⽂索引模式
⼀种是⾃然语⾔模式,是默认情况的模式
⼀种是布尔模式,这个模式可以包括或排除某些单词
布尔模式
CREATE FULLTEXT INDEX idx_title_body ON posts (title,body);
SELECT *
FROM posts
WHERE MARCH(title,body)
AGAINST(‘react - redux’ IN BOOLEAN MOOE);
可以排除“redux”,只要在它前⾯加上负号
在寻包含“react”,但不包含"redux"的⾏
也可以要求包含某个单词
WHERE MARCH(title,body)
AGAINST(‘react - redux + form’ IN BOOLEAN MOOE);
意思是结果中的每⼀⾏标题或正⽂⾥必须含有form这个单词
也可以搜索短语,需要加双引号
WHERE MARCH(title,body)
AGAINST(’“handling a form”’ IN BOOLEAN MOOE);
9.删除索引
DROP INDEX idx_state ON customers;
10.复合索引
复合索引允许对多列建⽴索引
mysql高级教程视频CREATE INDEX idx_state_points ON customers (state,points);
11.复合索引中列的顺序
应该对列进⾏排序,让更频繁使⽤的列排在最前⾯
把基数更⾼的列排在最前⾯
12.强制使⽤别的索引
在FROM⼦句后⾯, WHERE⼦句前⾯
USE INDEX () --括号⾥键⼊索引的名称
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论