`
zqjshiyingxiong
  • 浏览: 439770 次
  • 性别: Icon_minigender_1
  • 来自: 无锡
社区版块
存档分类
最新评论

mysql的select的问题

    博客分类:
  • DB
阅读更多
select a.*,b.*,c.*,d.*       
from table1 b 
inner join table2 d on b.memberId = d.memberId  
inner join table3  a on d.applyId = a.applyId    
inner join table4 c on a.exhId = c.exhId    
where    a.deleted=0 order by a.createTime desc limit 20;

 

我们的主题从上面一条sql开始,首先这几种表,数据最多的一张表的数据不过为13000条记录;但是上面的join

 

查询需要半分钟才能查出来!

 

这句sql是绝对要优化的,但是问题出在那了?

 

首先加了两个相关的索引(a.deleted,a.createTime);但是问题依然存在。

 

查询网络,很多人也遇到类似的问题,但还是一些order by,加索引等等一些问题。

 

通过explain来分析sql,也很正常。

 

最后将需要查询的字段,只留一个,0.09秒结果就出来了。

 

问题难道出在,显示的字段过多,这看来是显然。

 

下面有做了一些测试,结论为:

 

MYSQL,在数据量很少的情况下,大于等于三个inner join,并且四个表都有字段需要显示时,性能及会变的很慢。这种情况,我认为属于mysql自身的问题,所以你通过explain等mysql自带工具来分析,他自然不会告诉你他的毛病,如果知道他都会自己改了不是。所以我们还是要多测试多总结。

 

解决办法:避免四个表的join查询,拆分查询,或者将需要显示的字段控制在三个表以内。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    MYSQL SELECT INTO 和 INSERT INTO SELECT

    ### MySQL中的SELECT INTO和INSERT INTO SELECT详解 #### 一、引言 在数据库管理与应用开发过程中,数据的复制是一项非常常见的需求。特别是在进行数据迁移、备份或创建新表时,能够快速有效地复制数据是非常重要...

    mysql的select语法常用集合

    mysql的select语法常用集合,mysql常用select,select大全

    MySQL进阶SELECT语法篇

    MySQL进阶SELECT语法篇,内有大量高级SELECT语句、用法 最简单的SELECT语句是SELECT select_list,实际上利用这个最简单的SELECT语句,你也可以完成许多你期待的功能,首先你能利用它进行MySQL所支持的任何运算,例如...

    mysql.rar_MYSQL_mysql select c

    在本压缩包文件"mysql.rar"中,重点讲述了如何通过MYSQL接口执行SQL语句,特别是关于`SELECT C`的用法。这里,我们将会深入探讨MySQL的基础知识、SQL查询语言以及如何在编程中使用MySQL接口来执行`SELECT`查询。 ...

    提高mysql select速度的方法

    mysql提高读操作速度的方法

    mysql SELECT FOUND_ROWS()与COUNT()用法区别1

    在MySQL数据库中,`SELECT FOUND_ROWS()` 和 `COUNT(*)` 都是用来获取数据表中记录数量的方法,但它们之间存在一些关键的区别。了解这些差异对于优化查询性能和满足特定需求至关重要。 首先,`COUNT(*)` 是一个标准...

    25.1 MySQL SELECT语句

    **MySQL SELECT语句详解** MySQL是一种广泛使用的开源关系型数据库管理系统,它的SELECT语句是用于从数据库中检索数据的关键命令。本篇文章将深入探讨SELECT语句的各个方面,帮助你更好地理解和运用这一强大的查询...

    MySQL Select from 查询数据.docx

    在使用 Select 语句时,我们需要注意中文乱码的问题。为了避免中文乱码,我们可以使用 mysql_query() 函数来设置字符集,例如: ```php mysql_query('set character set gbk'); ``` 在上面的代码中,我们使用了 ...

    mysql各种语句多表查询+ mysql视图 mysql数据库管理+ select语句+ 创建

    在本教程中,我们将深入探讨MySQL中的多种查询语句,包括多表查询、视图、数据库管理、SELECT语句以及创建表等核心概念。 首先,让我们从多表查询开始。在实际应用中,往往需要从多个相关表中获取信息,这就需要...

    MySQL常见问题及解决方法

    MySQL常见问题及解决方法 MySQL 是一种关系型数据库管理系统,它广泛应用于 web 应用程序中。然而,在使用 MySQL 过程中,用户经常会遇到一些常见的问题,本文将对这些问题进行总结和解决。 一、 MySQL 登录问题 ...

    01(mysql入门之基础)select

    (mysql入门之基础)select,有入门的代码案例,代码中有详细的注释!

    分析MySQL中优化distinct的技巧

    上述场景中,用户遇到了一个问题:对一个10G以上的单表`user_access_xx_xx`执行`SELECT COUNT(DISTINCT nick)`以统计唯一用户访问(UV)时,即使有`nick`字段的索引,执行计划仍然显示全索引扫描,导致服务器性能受...

    用SELECT… INTO OUTFILE语句导出MySQL数据的教程

    生成的文件默认是世界可读的,并归MySQL服务器所有,这可能会导致访问控制问题。 6. **文件检索**: 文件会直接在服务器主机上创建,因此,如果需要在其他地方使用这些文件,你需要有访问服务器主机的方式,或者将...

    MYSQL常用查命令

    mysql> select version();查看MySQL的版本号 mysql> select current_date();查看MySQL的当前日期 mysql> select version(),current_date(); 同时查看MySQL的版本号和当前日期 mysql> show databases;预示当前存在...

    MySQL锁类型以及子查询锁表问题、解锁1

    总的来说,理解和正确使用MySQL的锁机制对于优化并发性能和避免并发问题至关重要。在设计和编写SQL语句时,应尽可能减少锁定范围,提高系统效率。同时,了解如何排查和处理死锁问题也是数据库管理员必备的技能。

    远程连接MySQL所遇到的问题以及解决问题方法

    远程连接MySQL所遇到的问题以及解决问题方法 在 Linux 系统中,使用 YUM 命令安装 MySQL 后,需要进行一系列的配置以便能够远程连接 MySQL 数据库。以下是解决不能进行远程连接 MySQL 数据库的问题的方法,这些方法...

    02查询(mysql入门之条件查询)select

    这是我自己学习mysql时的学习笔记,每一个知识点都是自己动手写的,涵盖了mysql中的几乎全部的基础知识点,查询,子查询,分组,排序,常用函数,多表连接,视图,变量,存储过程,函数,分支结构,循环结构等等

    php mysql实现mysql_select_db选择数据库

    本文将详细介绍`mysql_select_db`函数的使用方法、参数以及实例。 ### `mysql_select_db`函数详解 `mysql_select_db`函数的语法如下: ```php bool mysql_select_db ( string $database , [ resource $connection...

    mysql SELECT语句去除某个字段的重复信息

    ### MySQL SELECT 语句去除某个字段的重复信息 在MySQL数据库操作中,经常会遇到需要去除某个字段重复信息的情况。本文将详细介绍如何通过SQL查询来实现这一功能,并对具体语句进行解析,帮助读者理解其中的工作...

Global site tag (gtag.js) - Google Analytics