mysql两个大表数据的查询。
有一个基本表:tba 大概100w左右数据。
结构:
kid BIGINT(20) 非空,无符号,主键
cid MEDIUMINT(7)
status
有很多个字段,只用到这三个。
这个表的索引:
kid
cid + updatetime(这个也是时间戳)
cid + aid(这是个其它表的id)
========
另外一个表:tbb,大概有5KW左右,还会继续增长
结构:
statsid 自增id,主键
id 对应tba表的kid,非唯一。
cid 与tba表的cid对应
createtime 时间戳,保存每天的零时。
clicks int 点击数,即一个id每一天的点击数
costs float 消费,与clicks一样。
索引:
主键id
id + createtime
cid + createtime
这个表也有很多个字段,目前只用到这几个。
=================
现在说说实现的功能:
想统计tba表里 每个数据的某段时间(假设为半个月)时的点击数
目前的方法:select xxxx,sum(clicks) from tba left join tbb (a.kid=b.id and createtime between 半个月时间) group by b.id
还有一种方法:
把b表的数据拿出来,在程序里计算。不过效率也很低。
请教大侠们sql优化。。
结构:
kid BIGINT(20) 非空,无符号,主键
cid MEDIUMINT(7)
status
有很多个字段,只用到这三个。
这个表的索引:
kid
cid + updatetime(这个也是时间戳)
cid + aid(这是个其它表的id)
========
另外一个表:tbb,大概有5KW左右,还会继续增长
结构:
statsid 自增id,主键
id 对应tba表的kid,非唯一。
cid 与tba表的cid对应
createtime 时间戳,保存每天的零时。
clicks int 点击数,即一个id每一天的点击数
costs float 消费,与clicks一样。
索引:
主键id
id + createtime
cid + createtime
这个表也有很多个字段,目前只用到这几个。
=================
现在说说实现的功能:
想统计tba表里 每个数据的某段时间(假设为半个月)时的点击数
目前的方法:select xxxx,sum(clicks) from tba left join tbb (a.kid=b.id and createtime between 半个月时间) group by b.id
还有一种方法:
把b表的数据拿出来,在程序里计算。不过效率也很低。
请教大侠们sql优化。。
...全文
相关推荐
MySQL大表中重复字段的高效率查询方法
在MySQL数据库管理中,处理大数据表的重复字段查询是一个常见的挑战。当表的数据量非常大时,传统的查询方法可能会导致性能下降,甚至无法在可接受的时间内完成。
MySQL千万级大表深度分页为什么慢,以及优化的方法、原理
【MySQL千万级大表深度分页慢的原因及优化方法】在MySQL中,处理千万级大表的深度分页查询时,通常会遇到性能问题。
mysql千万级数据大表该如何优化?
MySQL中的千万级数据大表优化是一项复杂而关键的任务,它涉及到多个方面,包括数据库设计、索引策略、SQL优化、硬件配置以及存储引擎的选择。以下是一份详细的优化指南,涵盖了上述提到的关键点:1.
mysql中向表中某字段追加字符串的方法
在实际的数据库管理中,除了追加字符串,还有其他一些相关的知识点:- **SQL优化**:对于处理大规模数据的大表,优化查询至关重要。可以使用索引、分批处理、避免全表扫描等方式提高性能。
MySQL 全表遍历:优化查询大表数据的方法
在MySQL数据库中,当我们需要查询一张包含大量数据的表时,全表遍历是一种常见的查询方式。全表遍历是指数据库系统会扫描表中的每一行数据,以找到满足查询条件的结果。然而,对于大表而言,全表遍历可能会导致查询性能下降,因为它需要消耗大量的时间和资源。然而,需要注意的是,优化查询性能是一个复杂的过程,需要根据具体情况选择合适的优化策略。在本文中,我们将讨论一些优化查询大表数据的方法,以提高查询性能并降低资源消耗。同时,我们还将提供相应的MySQL源代码示例,以便更好地理解这些优化方法。如有任何问题,请随时提问。



