mysql数据库中数据量太大查询太慢怎么办?
- 优化查询语句,使用更具体的where查询条件
- 建立合适的索引
- 分表:将大表垂直分表或者水平分表
索引是什么
索引(index)是帮助MySQL高效获取数据的数据结构(有序)。以B树(B-tree)、哈希表、位图、全文索引等形式存在的数据结构
- 普通索引(Index):最基本的索引类型,允许重复值。
- 唯一索引(Unique Index):确保索引列的值是唯一的,但允许一个NULL值。
- 主键索引(Primary Key):一种特殊的唯一索引,每个表只能有一个主键,不允许重复值和NULL值。
- 复合索引(Composite Index 或 Multiple-column Index):在多个列上创建的索引。
- 全文索引(Full-text Index):用于全文搜索。
- 空间索引(Spatial Index):用于地理数据的索引。
Mysql中的连表查询:
有A,B两张表,总的集合为C,那么左连接查询会得到A表的所有数据,如果A,B表有交集同样会显示出来,但是不显示除了交集之外的B表的数据,如果右表没有匹配的值,查询结果处显示左边A表的所有信息,但对于B表的查询如果没有结果则显示为NULL,右连接查询与此相似。
左(外)连接select * from 表1 left join 表2 on连接条件 [where条件查询]
联表查询中on和where的区别:
1.on在内连接中可省略,外连接不可省略;
2.on在内连接中执行效果和外连接执行效果不同;
left join...on查询不能过滤掉左表中的数据,而内连接on查询可以过滤掉全局数据。
3.外连接中on和where不同
on筛选笛卡尔积过滤条件,where筛选具体业务