[英]Which query will execute faster in MySql
我在我的表上创建了索引,然后使用两种不同的方式触发相同的查询:我在MySql上运行这些查询,但总是得到不同的执行时间,有时候第一个更快,有时是第二个......这就是为什么我需要专家对此的意见。查询是第一个是
select t1.field
from table1 as t1
where t1.field in (
select t2.field
from table2 as t2
where t2.field in (
select t3.field from table3 as t3
where t3.field='something'))
第二次使用join作为
select t1.field
from table1 as t1,
table2 as t2,
table3 as t3
where t1.field = t2.field
and t2.field = t3.field
and t3.field='something'
所以任何人都可以告诉我哪些会给我带来高性能以及为什么我的数据库太大了....所以我想知道哪种是在MySql中编写此类查询的更好方法。
第二种方法比第一种方法更快。
正确的索引将在t1(字段),t2(字段),t3(字段)上具有索引
当您使用explain作为第一种方法时,您将看到mysql将为两个子查询创建两个派生表
而在第二种方法中,mysql检查的行将要少得多
只有您才能真正回答您的问题,因为只有您可以访问您的查询实际运行的硬件,软件,架构,索引,数据等的确切组合。
看一下MySQL EXPLAIN
语句。
在参与比较的列上使用join和create index。 然后使用“解释”来检查性能:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.