php - 某些账单详细信息页面的重度用户会出现延迟

标签 php sql mysql

我使用mysql + php开发了一个计费摘要页面。

  • 有很多用户:(1M)
  • 轻度用户:每条记录少于 10K:99 万用户
  • 重度用户:每条记录约1M条

SQL 如下:

SELECT SUM(value_a) A, SUM(value_b) B, SUM(value_c) C
FROM  daily_data_sep_2010
WHERE  user_id='<user_id>'
AND type
IN (
  'type_a',  'typeb'
 )
AND publish_date
BETWEEN  '<start_date>'
AND  '<end_date>'
GROUP BY publish_date
ORDER BY publish_date DESC 

daily_data_sep_2010 表类型为 MyISAM

相同的查询有多种类型,但是 SUM(value_a) A、SUM(value_b) B、SUM(value_c) C 确实相同(相等) “WHERE”、“GROUP BY”条件不相同

这个屏幕对于重度用户来说非常慢。 大家有什么好的解决办法吗?

解释在这里

|表|类型|possible_keys |key |key_len |ref |行|额外|

|daily_data_sep_2010|全部|主要,user_id_key,类型,发布日期|||| 1059756 |使用地点;使用临时的;使用文件排序|

我认为行大小对于总和来说太大了。 所以我期待其他解决方案(Hadoop?)

最佳答案

如果您在(用户 ID,类型)上创建复合索引并执行以下操作,会有什么不同:

       where userid = ? and type in (a,b)
       and publish_date between...
       group by publish_date

关于php - 某些账单详细信息页面的重度用户会出现延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3973541/

相关文章:

phpMyadmin 错误 2002 LEMP 堆栈

PHP 301 重定向给出 302

c# - LINQ to SQL,检查与连接字符串的连接是否有效

mysql - 如何使用sql语句进行搜索?

mysql - 更新 Node mysql 中的行时出现问题

php - 登录系统,读取id和密码即可登录

php - Laravel 的能力在争论中是多态的吗?

mysql工作台错误代码1215 : can't add foreign key constraint

sql - 寻找一种方法来限制 SQL 结果每个特定列 3 个结果

php - viewmanager php中的日期形成