MySQL最佳选择查询来自两个表

时间:2014-10-16 09:38:16

标签: mysql sql

我有两个包含以下字段的数据库。

表1(客户)

customer_id
age
name
salary
zip

表2(zip)

zip
state
city

我需要从两个年龄都在25岁左右的表中获取数据。为此,我需要编写最佳优化查询。因为我写了以下查询。

SELECT a.name,a.salary,b.city,b.state From customer as a , zip as b
LEFT INNER JOIN ON  a.zip = b.zip
WHERE age >25

我的问题是我可以在没有连接操作的情况下为此目的编写此查询。

SELECT a.name,a.salary,b.city,b.state From customer as a , zip as b    
WHERE age >25 and a.zip = b.zip

为此目的最好的查询是什么。如果我在另一个select语句里面写select语句,这样好吗?

2 个答案:

答案 0 :(得分:0)

回答原始问题下面的评论中提出的问题。从MySQL的优化器的角度来看,以下查询完全相同......

SELECT a.name
     , a.salary
     , b.city
     , b.state 
  FROM customer a, zip b    
 WHERE a.zip = b.zip
   AND age > 25;

SELECT a.name
     , a.salary
     , b.city
     , b.state 
  FROM customer a
  JOIN zip b    
    ON a.zip = b.zip
  WHERE age > 25;

第二个查询更容易阅读,更灵活(在某种意义上我们可以更容易地以各种方式改变它) - 当然,没有人会如此愚蠢到存储age

答案 1 :(得分:-1)

联接更整洁/更容易阅读。对于您的示例中的mysql(可能还有其他平台??),您可以使用USING(zip),但是我没有在from部分中使用多个表,然后也使用连接。我可能已经写了你的查询:

SELECT a.name,a.salary,b.city,b.state 
FROM customer a
LEFT INNER JOIN zip b USING(zip)
WHERE age >25