大家好,我是顺亿,今天我们来聊聊MySQL中的两个重要概念——视图和索引。
首先,什么是视图呢?简单来说,视图就像是一张虚拟的表格,它是由实际存在的表格通过查询语句生成的。视图的好处是,我们可以通过视图来筛选出我们需要的部分数据,隐藏掉不必要的信息,提高数据的安全性。
视图与数据表的区别
视图和表虽然很像,但它们还是有区别的。视图不是真实存在的数据,它只是定义了一个查询语句,当查询视图时,数据库会根据这个查询语句去查询实际的数据表。
视图的优点
- 定制用户数据:不同用户对数据的需求不同,视图可以帮助我们为不同的用户定制不同的数据。
- 简化数据操作:复杂的查询语句可以通过创建视图来简化。
- 提高数据安全性:我们可以只授权用户访问视图,而不直接访问数据表,从而提高数据的安全性。
- 共享所需数据:通过视图,我们可以共享数据库中的数据,而不需要每个用户都存储自己的数据副本。
- 更改数据格式:通过视图,我们可以重新格式化检索出的数据。
- 重用SQL语句:视图定义后,我们可以多次使用这个视图,而不需要每次都重新编写查询语句。
创建视图的语法
CREATE VIEW <视图名> AS 接下来,我们来聊聊索引。索引就像是一本字典的索引,它可以帮助我们快速找到我们想要的数据。
什么是索引
索引是一种特殊的数据库结构,它由数据表中的一列或多列组合而成。通过索引,我们可以快速找到数据表中有某一特定值的记录。
索引的优点
- 提高查询速度:这是使用索引最主要的原因。
- 加速表与表之间的连接。
- 减少查询中分组和排序的时间
索引的缺点
- 增加维护成本:创建和维护索引需要时间和资源。
- 占用磁盘空间:索引需要占用额外的磁盘空间。
- 降低数据维护速度:当对表中的数据进行增加、删除和修改时,索引也需要进行相应的更新。
- 影响插入记录的速度:向有索引的表中插入记录时,数据库系统会按照索引进行排序,这样就降低了插入记录的速度。
何时不使用索引
- 表记录太少
- 经常增删改的表
- 数据重复且分布均匀的表字段
- 频繁更新的字段
- where条件里用不到的字段
索引失效的情况
- like以通配符%开头
- 全表扫描比走索引查询的快
- 字符串不加单引号
- where中索引列使用了函数
- where中索引列有运算
- is null无法使用索引
- 复合索引没有用到左列字段
- 条件中有or,前面的列有索引,后面的列没有
索引分类
- 普通索引:最基本的索引,没有任何限制。
- 唯一索引:索引列的值必须唯一,但允许有空值。
- 主键索引:一种特殊的唯一索引,一个表只能有一个主键。
- 组合索引:在多个字段上创建的索引。
- 全文索引:主要用来查找文本中的关键字。
好了,今天我们就聊到这里。希望这篇文章能帮助大家更好地理解MySQL视图和索引。如果你还有其他问题,欢迎在评论区留言。我是顺亿,我们下期再见!
更多精彩内容,请关注「趣航编程网」(www.vqhf.com)。
