当前位置: 首页 > article >正文

【MySQL】索引和视图

索引

索引定义

  • 索引是在数据库表的字段上添加的,是为了提高查询效率存在的一种机制。
  • 一个字段可以添加一个索引,多个字段联合起来也可以添加索引。
  • MySQL查询主要为两种方式:索引检索和全表扫描。如果条件中包含某个字段,而该字段上没有建立索引,则MySQL会将该字段的每一个值都比对一遍,效率比较低。

索引的添加和删除

  • 考虑添加索引的情况

    • 数据量庞大
    • 该字段经常作为条件,即该字段经常被扫描。
    • 该字段很少进行DML操作。
  • 建议索引添加在主键或者unique字段上。

  • 添加索引的方法:create index index_name on table_name(...field_name)

  • 删除索引的方法:drop index index_name on table_name

索引失效

  1. 模糊匹配的时候已“%”开始,例如:sdelect * from user where user_name like '% John';
  2. 使用or要求两边的条件字段都要有索引,如果其中一边没有索引,则另一边即使有索引,索引也会失效。
  3. 使用复合索引的时候,没有使用左侧的字段进行查找,索引会失效。
    • 复合索引:两个及以上的字段联合起来添加索引。
    • 最左匹配原则
    • 例子:user表中,索引建立在(id, name)上,执行语句select * from user where id = 1;会使用索引,执行语句select * from user where name = 'John';则索引失效。
  4. 在where中索引列参与了运算,索引失效。
    • 例子:假设索引建立在sal字段上,select * from user where sal = 3000;使用了索引,而select * from user where sal + 1 = 3000;索引失效。
  5. 在whhere中索引列使用了函数。
    • 例子:select * from user where lower(name) = 'smith';索引失效。
  6. 还有更多的情况会导致索引失效,这里只列举这些。

视图

视图定义

  • 站在不同的角度看待同一份数据。
  • 创建视图:create view view_name as select ...field_name from table_name。只有DQL语句才能以view的形式创建。
  • 删除视图:drop view view_name

视图的作用

  • 面向视图进行增删改查,对视图的增删改查会导致原表被操作。
  • 假设有一条复杂的SQL语句被应用在很多位置,每次使用都需要重新编写这条SQL语句,太过复杂。可以把这条SQL语句以视图对象的形式新建,在需要SQL语句的时候直接使用视图对象,大大简化开发。,同时也利于后期的维护(修改的时候只需要修改视图)。
  • 总结:方便,简化开发,利于维护。

http://www.kler.cn/a/556989.html

相关文章:

  • 【CXX】5 桥接模块参考
  • 【够用就好005】-在VSCode中管理ECS服务器的实操步骤
  • MYSQL的第一次
  • AI赋能编程:PyCharm与DeepSeek的智能开发革命
  • 一周学会Flask3 Python Web开发-客户端状态信息Cookie以及加密
  • 2025.2.23机器学习笔记:PINN文献阅读
  • Day 45 卡玛笔记
  • qt5实现表盘的旋转效果,通过提升QLabel类
  • go WEB框架
  • SpringBoot3中跨域问题解决
  • 新一代MPP数据库:StarRocks
  • Redis7——基础篇(五)
  • 大数据开发治理平台~DataWorks(词汇梳理)
  • SmartX 超融合硬盘健康检测机制升级(附故障模拟性能实测)
  • Python 学习之旅:高级阶段(十一)数据库操作 Redis
  • Docker 与 Nginx:容器化 Web 服务器
  • 欢乐力扣:赎金信
  • R 语言科研绘图第 27 期 --- 密度图-分组
  • 【DeepSeek】-macOS本地终端部署后运行DeepSeek如何分析图片
  • 【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists学习笔记