Mat*_*ati 1 php mysql database performance
我正在使用这样的查询:
SELECT * FROM videos WHERE id IN (SELECT video_id FROM videos_tags WHERE tag_id = 2)
Run Code Online (Sandbox Code Playgroud)
要搜索具有相同标签的视频,但是大约有8,000个视频,这个查询太慢了.如何更快地进行此查询?也许JOIN更快?像videos_tags中的select*之类的东西会加入视频(videos_tags.video_id = videos.id),其中videos_tags.tag_id = 2更快?
您可以替代使用JOIN子查询.
SELECT DISTINCT a.*
FROM videos a
INNER JOIN video_tags b
ON a.ID = b.video_ID
WHERE b.tag_id = 2
Run Code Online (Sandbox Code Playgroud)
为了提高性能,请在video_tags引用的表上创建外键约束videos.示例,(确保它video.ID是主键或唯一键)
ALTER TABLE video_tags ADD CONSTRAINT vt_fk
FOREIGN KEY (video_ID) REFERENCES video(ID)
Run Code Online (Sandbox Code Playgroud)
要进一步了解联接,请访问以下链接:
| 归档时间: |
|
| 查看次数: |
7470 次 |
| 最近记录: |