mysql 取数据的问题。

php中文网
发布: 2016-09-03 00:14:12
原创
1428人浏览过

  1. 我现在有一张表,没有主键,只有一个联合唯一 (date,user_id,count_name, )
    表格记录示例: date:20160808 user_id:556 count_name: a1

    AI建筑知识问答
    AI建筑知识问答

    用人工智能ChatGPT帮你解答所有建筑问题

    AI建筑知识问答 22
    查看详情 AI建筑知识问答
  2. date表示日期,user_id 表示用户的id , count_name 表示某一个统计值。

  3. count_name 可取值 (a1,a2,a3,···,a12,b1,b2,b3,···,b12);

  4. 每天产生的记录有几万条。

  5. 数据库每次取出记录上限1万条。

我现在需要统计12个值。 用mysql语句可以这么表示:

<code>select count(distinct(`shop_id`)) from count_table where date = '20160808' and count_name in ('a1','b1'); 
select count(distinct(`shop_id`)) from count_table where date = '20160808' and count_name in ('a2','b2'); 
···</code>
登录后复制

这样取12次数据库,可以达到结果,但效率不高。

请问有没有方法可以一次取出想要的数据呢?(这是一个比较老的数据库,数据量比较大,修改数据库什么的做最后的考虑哈!)

尝试过的方法:

  1. 分页统计的话,由于表格没有主键,分页不好处理。

  2. 一次性取出数据在处理,受制于mysql一次只能取出1万条左右的数据,再多可能就崩溃了。

回复内容:

  1. 我现在有一张表,没有主键,只有一个联合唯一 (date,user_id,count_name, )
    表格记录示例: date:20160808 user_id:556 count_name: a1

  2. date表示日期,user_id 表示用户的id , count_name 表示某一个统计值。

  3. count_name 可取值 (a1,a2,a3,···,a12,b1,b2,b3,···,b12);

  4. 每天产生的记录有几万条。

  5. 数据库每次取出记录上限1万条。

我现在需要统计12个值。 用mysql语句可以这么表示:

<code>select count(distinct(`shop_id`)) from count_table where date = '20160808' and count_name in ('a1','b1'); 
select count(distinct(`shop_id`)) from count_table where date = '20160808' and count_name in ('a2','b2'); 
···</code>
登录后复制

这样取12次数据库,可以达到结果,但效率不高。

请问有没有方法可以一次取出想要的数据呢?(这是一个比较老的数据库,数据量比较大,修改数据库什么的做最后的考虑哈!)

尝试过的方法:

  1. 分页统计的话,由于表格没有主键,分页不好处理。

  2. 一次性取出数据在处理,受制于mysql一次只能取出1万条左右的数据,再多可能就崩溃了。

相关标签:
最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号