怎么样提高 两表的多次关联查询性能?
在数据库中,有两张表ms_property ,ms_messages
表ms_messages存放内容, 表ms_property存放属性,属性不是固定数量的,可能有很多,记录量约50W级
两表通过msgid关联,一条内容记录对应不定数的属性记录,记录数约6万级
表ms_property
propid msgid property
-----------------------------
1 1 11
2 1 22
3 1 33
4 1 44
5 1 AA
6 1 BB
7 1 CC
.
.
.
8 2 11
9 2 22
10 2 33
11 2 44
12 2 AA
13 2 BB
14 2 CC
.
.
.
表ms_messages
msgid message
----------------------------
1 msg1
2 msg2
.
.
.
为了查到符合指定属性要求的记录,我目前用下面的SQL,性能特别慢
SELECT msg.msgid,msg.content FROM ms_messages msg
JOIN ms_property prop ON prop.msgid = msg.msgid
WHERE msg.status = 1
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property = '11')
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property <> '22')
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property IN ( '11','AA'))
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property NOT IN ('33','BB'))
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property IN ('44,','22','CC')
GROUP BY msg.msgid
LIMIT 20
那位可以指定一下,怎么去优化SQL,或是有什么简洁的设计思路
表ms_messages存放内容, 表ms_property存放属性,属性不是固定数量的,可能有很多,记录量约50W级
两表通过msgid关联,一条内容记录对应不定数的属性记录,记录数约6万级
表ms_property
propid msgid property
-----------------------------
1 1 11
2 1 22
3 1 33
4 1 44
5 1 AA
6 1 BB
7 1 CC
.
.
.
8 2 11
9 2 22
10 2 33
11 2 44
12 2 AA
13 2 BB
14 2 CC
.
.
.
表ms_messages
msgid message
----------------------------
1 msg1
2 msg2
.
.
.
为了查到符合指定属性要求的记录,我目前用下面的SQL,性能特别慢
SELECT msg.msgid,msg.content FROM ms_messages msg
JOIN ms_property prop ON prop.msgid = msg.msgid
WHERE msg.status = 1
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property = '11')
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property <> '22')
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property IN ( '11','AA'))
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property NOT IN ('33','BB'))
AND prop.msgid in(SELECT DISTINCT msgid FROM ms_property WHERE property IN ('44,','22','CC')
GROUP BY msg.msgid
LIMIT 20
那位可以指定一下,怎么去优化SQL,或是有什么简洁的设计思路
...全文
相关推荐
图文详解MySQL中两表关联的连接表如何创建索引
通过图文给大家介绍了关于MySQL中两表关联的连接表如何创建索引的相关资料,文中介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面来一起看看吧。
三表关联查询
三表关联查询练习数据库和练习sql
MySQL SQL多表关联查询最佳实例
Mysql学习中 ,单表查询每个人都很容易掌握;但是多表之间的关联查询对于初学者是很难掌握的,以下是我学习中,结合老师所讲例子作的总结,主要就是三张表的关联查询。还包括group by操作。Join on;left join on;group by。
SSH一对多(两表双向关联查询)
SSH一对多(两表双向关联查询:person表、organisation‘组织'表) 数据库:Mysql 里面有现成的测试方法,直接在java中就可以看到效果
mysql实现多表关联统计(子查询统计)示例
主要介绍了mysql实现多表关联统计(子查询统计),结合具体案例形式分析了mysql多表关联统计的原理、实现方法及相关操作注意事项,需要的朋友可以参考下


疑难问题
