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

那些网站是asp做的重庆今天刚刚发生的重大新闻

那些网站是asp做的,重庆今天刚刚发生的重大新闻,wordpress 文章页面模板,冻品网站建设Mysql高级篇(中)—— 索引优化 一、索引分析案例案例 1:单表查询案例 2:两表连接查询案例 3:三表连接查询 二、避免索引失效常见索引失效场景简述场景 1场景 2场景 3场景 4场景 5场景 6 三、索引优化文字版示例版 一、…

Mysql高级篇(中)—— 索引优化

  • 一、索引分析案例
    • 案例 1:单表查询
    • 案例 2:两表连接查询
    • 案例 3:三表连接查询
  • 二、避免索引失效
    • 常见索引失效场景简述
    • 场景 1
    • 场景 2
    • 场景 3
    • 场景 4
    • 场景 5
    • 场景 6
  • 三、索引优化
    • 文字版
    • 示例版

一、索引分析案例

使用 EXPLAIN 分析 SQL 查询性能是数据库优化的重要环节。EXPLAIN 能展示查询的执行计划,帮助我们找出潜在的性能瓶颈。我们可以从 EXPLAIN 输出中的多个列(如 type、rows、Extra、key 等)来分析查询的执行情况, 常见的优化手段包括 创建单列复合索引避免全表扫描减少排序操作以及充分利用数据库索引覆盖 等。以下我将详细分析单表、两表、三表查询案例,给出性能分析和优化建议。

案例 1:单表查询

场景描述

我们有一个 employees 表,包含员工的姓名年龄部门等信息,结构如下:

CREATE TABLE employees (id INT AUTO_INCREMENT PRIMARY KEY,name VARCHAR(100),age INT,department_id INT,hire_date DATE,salary DECIMAL(10, 2),INDEX (department_id),INDEX (age)
);

查询要求:查找年龄在 30 岁以上的某部门的所有员工。

SELECT * FROM employees WHERE department_id = 1 AND age > 30;

使用 EXPLAIN 分析该查询:

EXPLAIN SELECT * FROM employees WHERE department_id = 1 AND age > 30;

在这里插入图片描述

案例 2:两表连接查询

场景描述

我们有两个表:employeesdepartments查询要求是找到所有在 "HR" 部门的员工,并按他们的薪水降序排列

SELECT e.name, e.salary FROM employees e 
JOIN departments d ON e.department_id = d.id 
WHERE d.name = 'HR' ORDER BY e.salary DESC;

使用 EXPLAIN 分析该查询:

EXPLAIN SELECT e.name, e.salary FROM employees e 
JOIN departments d ON e.department_id = d.id 
WHERE d.name = 'HR' ORDER BY e.salary DESC;

在这里插入图片描述

案例 3:三表连接查询

场景描述

假设我们有三个表:employees、departmentprojects,查询要求是查找所有参与某个项目员工姓名薪水所属部门

SELECT e.name, e.salary, d.name FROM employees e 
JOIN departments d ON e.department_id = d.id 
JOIN projects p ON e.id = p.employee_id 
WHERE p.project_name = 'Project A';

使用 EXPLAIN 分析该查询:

EXPLAIN SELECT e.name, e.salary, d.name FROM employees e 
JOIN departments d ON e.department_id = d.id 
JOIN projects p ON e.id = p.employee_id 
WHERE p.project_name = 'Project A';

在这里插入图片描述

二、避免索引失效

索引失效 问题是指数据库中的查询操作无法正确使用已有的索引,导致查询效率大幅下降。这通常发生在 SQL 语句的编写方式表结构的设计数据的变化未能与索引策略相匹配时。以下是几种常见的索引失效原因及避免方法,结合案例来说明。

常见索引失效场景简述

序号索引失效场景
1索引列上进行(计算、函数、类型转换)等操作
2使用 !=、<> 或者 NOT IN等操作
3is null,is not null也无法使用索引
4OR 条件
5like以通配符开头(‘%abc…’)的操作
6使用复合索引时 没有遵循最佳左前缀法则

上述场景示例解析:

场景 1

当查询条件 使用了函数或表达式 时,索引会失效。 例如对于表 users,如果在 name 字段上有索引,但执行以下查询:

SELECT * FROM users WHERE UPPER(name) = 'JOHN';

由于 UPPER(name) 使用了函数,MySQL 无法利用 name 字段上的索引。要避免这种情况,可以在插入或更新数据时将数据规范化为大写或小写,或者改用不依赖函数的查询方式:

SELECT * FROM users WHERE name = 'john';  -- 假设所有 name 都存储为小写

字段和查询条件的类型不一致 时,数据库会进行 隐式类型转换 ,这也会导致索引失效。例如,id 字段是整数类型,但查询时传入的是字符串

SELECT * FROM users WHERE id = '123';  -- id 为 INT

因为 id 字段是整数类型,数据库会尝试将 '123' 转换为数字,导致索引无法使用。正确做法是确保数据类型一致:

SELECT * FROM users WHERE id = 123;




场景 2

在使用 不等操作符 (!=、<>) 或者 NOT IN 时,索引通常不会生效。例如,以下查询可能无法使用索引:

SELECT * FROM users WHERE age != 30;

要避免这种情况,可以改用其他逻辑,如将查询拆分为多个条件(在特定情况下适用):

SELECT * FROM users WHERE age < 30 OR age > 30;




场景 3

在这里插入图片描述
在这里插入图片描述





场景 4

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述





场景 5

在这里插入图片描述
在这里插入图片描述





场景 6

最左前缀法则 是数据库中针对 复合索引 使用的一个原则。它指的是:在使用复合索引时,查询条件必须按照 索引中从左到右的顺序并且不跳过索引中间的列 使用,从第一个开始,逐步向右,才能有效利用索引。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、索引优化

文字版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例版

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

http://www.hkea.cn/news/320072/

相关文章:

  • 广州学校论坛网站建设疫情排行榜最新消息
  • 古董手表网站网络营销的主要方式和技巧
  • 做公司网站要那些资料百度电脑版下载官方
  • 定州网站建设公司企业网站源码
  • 0基础1小时网站建设教程如何给自己的公司建网站
  • 成都网站建设s1emens电商平台怎么加入
  • 六合哪家做网站建设域名注册查询软件
  • 网站建设的方案费用2023年新冠疫情最新消息
  • 九星市场做网站快速将网站seo
  • 长春做网站推广的公司提升神马关键词排名报价
  • 金融网站cms百度网盘客服电话人工服务
  • 美观网站建设物美价廉seo网站优化专员
  • 网站设计应该怎么做推广软文代写
  • 网站建设工作室发展百度收录教程
  • 没有网站 可以做百度口碑吗成都网站制作
  • 医院系统网站建设百度宁波营销中心
  • 网站劫持代码杭州互联网公司排名榜
  • 做网站找哪个部门吸引人的推广标题
  • 网站制作软件名字线做竞价推广代运营公司
  • avada如何做中英文网站沈阳百度推广排名优化
  • 做网站品长沙网络营销公司排名
  • b2b商贸网站环球网最新消息疫情
  • wordpress next主题什么是seo教程
  • 如何规划一个网站快手秒赞秒评网站推广
  • 中国网站开发网站seo需要用到哪些工具
  • 织梦做的网站首页出现空白网页平台做个业务推广
  • 备案做电影网站吗yandx引擎入口
  • 网站双倍浮动百度账号登陆入口
  • 聊城市网站建设网站推广排名
  • 帝国新闻网站模板百度seo推广怎么做