mysql高级知识总结 逃离我推掉我的手 2021-11-11 16:32 248阅读 0赞 # 一、索引 # (1)什么是索引 索引index是帮助MySQL高效获取数据的一种数据结构。![20190806092727692.png][] 可以看出,索引其实就是BTREE。 (2)创建索引 create index 索引名 on 表名(字段) 例如: CREATE INDEX idx_blogurl ON blog_image(image_url) (3)查看索引 show index from 表名 例如: SHOW INDEX FROM blog_image (4)删除索引 drop index 索引名 on 表名 例如: DROP INDEX idx_blogurl ON blog_image # 二、explain优化 # 使用explain可模拟优化器执行SQL查询语句,分析语句的性能。 ![20190806093806417.png][] id:表示select执行的顺序 select\_type:表示查询的类型,simple简单查询,primary多层查询的最外层,subquery包含子查询,derived有临时表,union联合查询。 table:表 type:查询类型,最重要(system>const>eq\_ref>ref>range>index>all) possible\_keys:可能出现的索引 key:使用的索引 key\_len:多用于复合索引,值越大,精度越高,性能越差 ref:索引的值 rows:可能读取的行数 extra:其他,最好不要出现,using filesort,using temorary代表会出现文件排序和临时表,对性能影响很大。 # 三、索引失效 # (1)左前缀法则,最左的不能没有,中间不能断,从哪里断,后面的索引就失效了。 例如: craete index idx\_abcd 查询时不从a开始,或中间有断开,就会全部失效或部分失效。 (2)不能有对索引列的任何操作 (3)条件之后全失效 (4)减少使用select \* (5)不等 isnull isnotnull 会失效 (6)除aa%外,like索引全失效 (7)or索引失效 ![watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B5Y2hhcm1fdQ_size_16_color_FFFFFF_t_70][] [20190806092727692.png]: /images/20211109/5804603c53c04b7aa1341aeb71c64d07.png [20190806093806417.png]: /images/20211109/851961dc086745c9adacf1604b76768d.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3B5Y2hhcm1fdQ_size_16_color_FFFFFF_t_70]: /images/20211109/02631b16c6924fca931a2f48cf602f0d.png
还没有评论,来说两句吧...