【发布时间】:2014-03-16 06:43:59
【问题描述】:
我有两张这样的表:
mysql> desc table1;
+-------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| name | varchar(255) | NO | | NULL | |
+-------+--------------+------+-----+---------+----------------+
2 rows in set (0.00 sec)
mysql> desc table2;
+-------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id | int(11) | NO | | NULL | |
| name | varchar(255) | NO | | NULL | |
| age | int(11) | NO | | NULL | |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)
两个表中各自数据的 ID 字段相同。
数据库引擎:MYISAM
我想从两个表中获取数据,为此我一直在尝试各种查询。
以下所有查询都可以正常工作,但我想知道性能方面的最佳查询,表包含 2000 万+条记录。
查询 1
SELECT t2.age, t1.name
FROM table2 t2
LEFT JOIN table1 t1 ON t2.id = t1.id
WHERE t1.id =1
AND t2.id =1
查询 2
SELECT table1.name, age
FROM table1, table2
WHERE table1.id =1
AND table2.id =1
查询 3
SELECT table1.name , table2.age
FROM table1, table2
WHERE table1.id = 1
AND table2.id = 1
查询 4
SELECT table1.name, table2.age
FROM table1
INNER JOIN table2 ON table1.id = table2.id
WHERE table1.id =1
AND table2.id =1
查询 5
SELECT table1.name, age
FROM table1, table2
WHERE table1.id =1
AND table2.id =1
那么哪一个最适合用于高负载/流量站点?最适合性能?
谢谢
【问题讨论】:
-
只是一个简短的评论。在查询 1 和 4 中,您已经定义了关系
t1.id=12.id,因此指定t1.id=1和t2.id=1是多余的。这些陈述之一就足够了。
标签: mysql query-optimization myisam