我正在使用MYSQL我有2个表我想加入,随着表变大,我想知道什么是更好的查询方式。这些表用于为各种用户存储图片的网站。有点像facebook。第一个表是图像表,其具有Id和源位置字段。另一个表称为user_images,外键具有图像id到图像表。表格没有放在一起的原因是因为多个用户可以拥有相同的图片并且以这种方式做事将消除冗余。
以下是我的查询,以获取特定用户的所有图像的源位置
SELECT i.source_location
FROM user_images AS u
INNER JOIN images AS i
ON i.image_id = u.image_id
WHERE u.user_id = 'USER'
所以我的问题是,查询更快的结果会更好,如下所示,或者无关紧要。
SELECT i.source_location
FROM
(SELECT image_id
FROM user_images
WHERE user_id = 'USER') AS u
INNER JOIN images AS i
ON i.image_id = u.image_id
基本上我会认为在加入之前做where子句 为了获得更快的结果,因为db将有一个较短的集合进行比较,因为连接表将会更小。我不知道这是否是正确的方法。 最好的方法是什么?如果有其他人有更好的方法可以帮助我,因为我看到这些表变得相当大。
答案 0 :(得分:-1)
您的images
表格是否有user_id字段?
如果是这样,只需执行INNER JOIN images
(i.image_id = u.image_id AND i.user_id =“USER”)