1

我正在使用 django 创建一个站点。为了测试,我创建了一个包含 100 万行的数据库,每行包含关于我网站上图像的信息(上传者、方向、描述和其他一些信息)。每个图像都有多个标签,这些标签存储在标签关系数据库中。表被索引。

标记关系数据库 id

tag_id= 标记表的外键

Tag_relation= 图像表的外键(100 万行)

现在我提供了一个页面,用户可以在其中使用图像行中的标签和其他参数(如上传器等)搜索图像。

现在这是我为创建搜索列表而运行的查询。

SELECT * FROM photos_main_tb,photos_tag_relation 
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT 0,10

现在我可以正常工作,给我图像。但是随着限制变得更大,所花费的时间稳步增加并变成几秒钟。

SELECT * FROM photos_main_tb,photos_tag_relation 
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT 500000,10

我可以做的一项优化是子查询并指定一个限制 Like

SELECT * FROM (photos_main_tb LIMIT 200,000,800000) ,photos_tag_relation 
WHERE photos_main_tb.id=photos_tag_relation.relation_id ORDER BY photos.rating LIMIT 
0,10

但这并不能真正解决我的问题。我希望能够像这个网站一样列出:http: //airteamimages.com/search.php。许多图像不会减慢速度。我是mysql的新手。原谅任何错误。我希望能够以毫秒为单位加载搜索中的每个页面,就像第一个查询一样。

更新:像第一条评论一样,我将停止选择 * 而只选择 id,这确实加快了速度。但是有没有其他技巧。该代码是否值得用于生产站点?

4

0 回答 0