如何优化此MYSQL查询-联接多个表

Doctorlai

我有一个大查询(MYSQL)来连接几个表:

SELECT * FROM
    `AuthLogTable`,
    `AppTable`,
    `Company`,
    `LicenseUserTable`,
    `LicenseTable`,
    `LicenseUserPool`,
    `PoolTable` 

WHERE
    `LicenseUserPool`.`UserID`=`LicenseUserTable`.`UserID` and 
    `LicenseUserTable`.`License`=`LicenseTable`.`License` and 
    LEFT(RIGHT(`AuthLogTable`.`User`, 17), 16)=`LicenseUserPool`.`UserID` and 
    `LicenseUserPool`.`PoolID`=`PoolTable`.`id` and 
    `Company`.`id`=`LicenseTable`.`CompanyID` and 
    `AuthLogTable`.`License` = `LicenseTable`.`License` and 
    `AppTable`.`AppID` = `AuthLogTable`.`AppID` AND 
    `PoolTable`.`id` IN (-1,1,2,4,15,16,17,5,18,19,43,20,3,6,8,10,29,30,7,11,12,24,25,26,27,28,21,23,22,31,32,33,34,35,36,37,38,39,40,41,42,-1)

ORDER BY 
     `AuthLogTable`.`AuthDate` DESC,
     `AuthLogTable`.`AuthTime` DESC

LIMIT 0,20

我使用explain,它给出了以下内容:

在此处输入图片说明

如何使它更快?在一张大桌子上要花几秒钟。

“显示第0-19行(共20行,查询用时3.5825秒)”

据我所知,查询中使用的字段在每个表中都有索引。

AuthLogTable设置了索引

在此处输入图片说明

您可以尝试在数据上不使用“ order by”子句的情况下运行此查询,以查看它是否有所不同(也可以运行“ explain”)。如果是这样,您可以考虑在排序依据的字段上添加索引。Using temporary; using filesort;表示创建临时表然后对其进行排序,而无需花费时间的索引。

据我所知,联接样式没有任何区别,因为无论如何查询都被解析为另一种形式。但是您仍然可能要使用ANSI连接语法(另请参见ANSI连接与“ where子句” join的问题)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用表联接优化此查询?

来自分类Dev

如何联接多个表

来自分类Dev

使用内部联接MYSQL联接多个表

来自分类Dev

如何使用联接多个表编写此mysqli查询?

来自分类Dev

SQL查询联接多个表

来自分类Dev

sql联接如何联接多个表

来自分类Dev

MySQL表中的多个联接

来自分类Dev

在MySQL中联接多个表

来自分类Dev

在MYSQL中联接多个表

来自分类Dev

在MySQL中联接多个表

来自分类Dev

如何使用自联接优化此查询?

来自分类Dev

如何联接多个表并查找对

来自分类Dev

MySQL查询帮助请联接多个表

来自分类Dev

查询优化(多个联接)

来自分类Dev

使用左联接在多个表上优化SQL查询

来自分类Dev

SQL查询出多个联接表数据

来自分类Dev

PHP查询以联接多个表行

来自分类Dev

多个表的SCCM SQL查询联接

来自分类Dev

MYSQL选择联接多个表和SUM

来自分类Dev

mysql,多个表使用WHERE子句联接

来自分类Dev

使用mysql / php从多个表的多个联接返回多个结果

来自分类Dev

使用mysql / php从多个表的多个联接返回多个结果

来自分类Dev

我如何内部联接多个表?

来自分类Dev

如何在Symfony中联接多个表

来自分类Dev

如何使用CakePHP 3联接多个表?

来自分类Dev

MySQL / PHP精炼联接查询,用于搜索多个表

来自分类Dev

MySQL自定义联接查询使用多个表

来自分类Dev

如何在MySQL中使用子查询为报表优化多个联接的查询

来自分类Dev

如何从PHP的单个表中联接Mysql中具有多个条件的多个查询?