Mysql多表联合索引

Mysql多表联合索引,第1张

Mysql多表联合索引:

1、多表联合索引在查询语句中能加速查询速度。select * from table1,table2 where table1.id = table2.id。

2、多表联合的索引的sql语法,一个user表有4个字段 id name age sex,分别给name age sex建立三个单独的索引,此时建立create index name_age_sex on user(name,age,sex)这个新建立的索引跟前面那三个是独立的。就是说又新建立了空间存储这个新索引。

3、索引的维护主要包括定期清理数据碎片。

mysql有什么命令可以让mysql同时使用两个索引

select * from a,b where a.id=b.id and a.id = 123

再explain一下看看?

因此,其实已经使用了。但是因为你的查询里对“左表a”没有条件,是全部输出的,因此不会用上a的索引,同时由于需要在b表里用id关联a表,因此就用上了b表的索引。

一但对a表增加条件,就会使用a表的索引,对索引的结果,又后继续用b表的索引来关联b表。

MySQL目前主要的索引类型有下面几种:

与前面的普通索引类似,但是他的索引列的值必须是唯一的,所以叫唯一索引,但是这个索引字段如果是空值是可以的,具体创建方式如下:

主键索引是一种特殊的索引,一个表只能有一个主键,不允许有空值,一般是创建表的时候创建主键索引,而且一般习惯设置成自增的,因为对弈MySQL的底层B+树存储起来很方便

组合索引指多个字段上创建的索引,只有在查询时候,查询条件中使用了创建索引时的第一个字段,索引才会生效,他使用遵循最左前缀原则.

索引生效情况:

select * from table where name=1

select * from table where name=1 and city=2

select * from table where name=1 and city=2 and age=3

索引不生效情况:

select * from table where name=1 and age=3

select * from table where city=2 and age=3

select * from table where age=3

select * from table where city=2

这个遵循的是最左原则,具体MySQL底层对联合索引的存储以及为什么是最左原则,参考本人另外一篇文章最后一段就能看明白

https://www.jianshu.com/p/99aabf9611a3

全文索引主要是用来查找文本中的关键字,而不是直接与索引中的值相比较.fulltext索引跟其他索引大不相同,他更像是一个搜索引擎,而不是简单的where 语句的参数匹配,fulltext索引配合match(匹配)和against(反对) *** 作使用,而不是一般的where语句加上like,他可以在create table,alter table,create index使用


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/6171543.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-17
下一篇 2023-03-17

发表评论

登录后才能评论

评论列表(0条)

保存