【发布时间】:2015-12-20 11:51:21
【问题描述】:
这是一个相当复杂的问题,但我会尽力描述它。
我目前有 2 个表连接到 insta_id。
第一个表名为Soc_stat,其中包含大量 Instagram 帖子条目。我在 SQL 查询中使用的列是 insta_id 和 main_tag。
另一个表称为tags,包括一个insta_id 以及与该insta_id 一起使用的所有tag_names。
ftags 表如下所示。
我当前的 SQL 查询如下所示
SELECT tag_names
FROM soc_stat
JOIN tags ON soc_stat.insta_id = tags.insta_id
WHERE main_tag = $hashtag
现在的问题是,目前我在tags 表中有 110000 行,并且上面的查询花费了很长时间,以至于它经常超时。但我想我可能已经找到了解决方案:soc_stat 表中的main_tag 始终在tags 表中的tag_names 下表示。
所以也许我不必加入这两个表?难道不能只检查tags 表中包含tag_name 等于$hashtag 的所有insta_id,然后获取链接到insta_id 的所有tag_names 吗? s?
编辑
我刚刚在我知道有问题的主题标签上的查询中添加了explain,结果如下:
在这里,我在一个使用较少的标签上完成了它,它仍然很慢,但几乎没有那么慢
【问题讨论】:
-
您是否为表格编制了索引?
-
两个表中 insta_id 的数据类型和大小是什么,以及如果它被索引,你如何索引它。 main_tag 的相同详细信息共享
-
嘿MenukZ。不,我没有索引我的表。不幸的是,我对 SQL 非常陌生,并且每天都在学习。所以甚至不确定我将如何索引它们。但我确信有一个指南。我目前正在为我的数据库使用 phpadmin
-
扎法尔。 insta_id 的数据类型为 varchar(250),tag_names 的数据类型为 varchar(65)。我没有索引任何东西。
-
请为两张表提供
SHOW CREATE TABLE。
标签: mysql sql database indexing query-optimization