首页 / MYSQL / mysql表索引一些问题哈
mysql表索引一些问题哈
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了mysql表索引一些问题哈,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含5436字,纯文字阅读大概需要8分钟。
内容图文
![mysql表索引一些问题哈](/upload/InfoBanner/zyjiaocheng/238/f7d750fc193844aaafb23eb9f010f610.jpg)
支付通知表 结构
字段 | 数据类型 | 长度 | 是否为空 | 默认值 | pk | 无符号 | 说明 |
---|---|---|---|---|---|---|---|
id | int | 10 | Y | Y | 自增ID | ||
order_serial | varchar | 255 | 渠道订单号(不确定长度类型) | ||||
cp_serial | varchar | 255 | 游戏内部订单号(不确定长度类型) | ||||
order_money | float | 8,2 | 订单金额 | ||||
channel_id | smallint | 6 | Y | 渠道ID | |||
game_id | smallint | 6 | Y | 游戏ID | |||
pay_stause | tinyint | 1 | 0 | Y | 渠道支付状态 0为支付失败 1为支付成功 | ||
pay_msg | varchar | 255 | 渠道支付信息 | ||||
notice_status | tinyint | 1 | 0 | Y | 游戏通知返回状态 0为 未通知游戏方 1:成功 2:金额不符 3:订单号不存在 4:重复订单 5:用户不存在 6:数据验证失败 | ||
notice_msg | varchar | 255 | 游戏通知返回信息 | ||||
start_date_time | int | 10 | Y | 接收订单时间 |
需求
一 插入
(一) 插入了时候 需要判断 渠道ID 游戏ID 渠道订单号 和 游戏内部订单号 在表中是否存在
二 查询
(一) 汇总查询
1、 时间段内按天统计 时间降序
查询条件
时间段 start_date_time 区间 必须
游戏ID game_id 非
渠道ID channel_id 非
查询结果
订单总数 渠道支付成功订单总数(pay_stause == 1)
游戏通知成功总数(notice_status != 0)
支付成功总金额(pay_stause == 1 order_money 合计 )
![图片描述][1]
2、订单明细查询 时间段内按天统计 时间降序
查询条件
时间段 start_date_time 区间 必须
渠道订单号 order_serial 非
游戏内部订单号 cp_serial 非
游戏ID game_id 非
渠道ID channel_id 非
渠道支付状态 notice_status 非
游戏通知返回状态 notice_status 非
查询结果
订单详情
![图片描述][2]
问题
(一) 目前给渠道订单号 游戏内部订单号 加上联合索引 方便插入了时候快速查到是否存在
(二)汇总查询中
**按天查询 目前想到了 只有 from_unixtime下 分组,利用区间来 减少扫描行数,但是出现临时表 文件排序 这个要怎么处理 **
订单汇总 查询单位时间内总单数
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_order_number FROM table_pay_notice where start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][3]
订单汇总 查询下行通知成功总数
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_notice_success_number FROM table_pay_notice where result_status != 0 AND start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][4]
统计上行 支付成功数量 支付成功金额
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_pay_success_number ,sum(order_money) FROM table_pay_notice where order_status = 1 AND start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][5]
(三) 订单明细中 索引要怎么加 条件就是一个时间是必须了 而其他条件都是非必须了 联合查询 要怎么加 不懂得
问题三 如果要分表 如何分 查询好像又是一个问题
上面就是碰到了问题,麻烦大家了
回复内容:
谢谢大家了, 描述好像有点不清楚,主要问题是 索引不晓得要怎么加才好,而且数据多了要怎么处理
支付通知表 结构
字段 | 数据类型 | 长度 | 是否为空 | 默认值 | pk | 无符号 | 说明 |
---|---|---|---|---|---|---|---|
id | int | 10 | Y | Y | 自增ID | ||
order_serial | varchar | 255 | 渠道订单号(不确定长度类型) | ||||
cp_serial | varchar | 255 | 游戏内部订单号(不确定长度类型) | ||||
order_money | float | 8,2 | 订单金额 | ||||
channel_id | smallint | 6 | Y | 渠道ID | |||
game_id | smallint | 6 | Y | 游戏ID | |||
pay_stause | tinyint | 1 | 0 | Y | 渠道支付状态 0为支付失败 1为支付成功 | ||
pay_msg | varchar | 255 | 渠道支付信息 | ||||
notice_status | tinyint | 1 | 0 | Y | 游戏通知返回状态 0为 未通知游戏方 1:成功 2:金额不符 3:订单号不存在 4:重复订单 5:用户不存在 6:数据验证失败 | ||
notice_msg | varchar | 255 | 游戏通知返回信息 | ||||
start_date_time | int | 10 | Y | 接收订单时间 |
需求
一 插入
(一) 插入了时候 需要判断 渠道ID 游戏ID 渠道订单号 和 游戏内部订单号 在表中是否存在
二 查询
(一) 汇总查询
1、 时间段内按天统计 时间降序
查询条件
时间段 start_date_time 区间 必须
游戏ID game_id 非
渠道ID channel_id 非
查询结果
订单总数 渠道支付成功订单总数(pay_stause == 1)
游戏通知成功总数(notice_status != 0)
支付成功总金额(pay_stause == 1 order_money 合计 )
![图片描述][1]
2、订单明细查询 时间段内按天统计 时间降序
查询条件
时间段 start_date_time 区间 必须
渠道订单号 order_serial 非
游戏内部订单号 cp_serial 非
游戏ID game_id 非
渠道ID channel_id 非
渠道支付状态 notice_status 非
游戏通知返回状态 notice_status 非
查询结果
订单详情
![图片描述][2]
问题
(一) 目前给渠道订单号 游戏内部订单号 加上联合索引 方便插入了时候快速查到是否存在
(二)汇总查询中
**按天查询 目前想到了 只有 from_unixtime下 分组,利用区间来 减少扫描行数,但是出现临时表 文件排序 这个要怎么处理 **
订单汇总 查询单位时间内总单数
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_order_number FROM table_pay_notice where start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][3]
订单汇总 查询下行通知成功总数
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_notice_success_number FROM table_pay_notice where result_status != 0 AND start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][4]
统计上行 支付成功数量 支付成功金额
`SELECT from_unixtime(start_date_time,'%Y-%m-%d') as currentDay, count(id) AS count_pay_success_number ,sum(order_money) FROM table_pay_notice where order_status = 1 AND start_date_time between '1421510400' and '1422806399' group by currentDay`
![图片描述][5]
(三) 订单明细中 索引要怎么加 条件就是一个时间是必须了 而其他条件都是非必须了 联合查询 要怎么加 不懂得
问题三 如果要分表 如何分 查询好像又是一个问题
上面就是碰到了问题,麻烦大家了
?????换个浏览器就页面不存在?
内容总结
以上是互联网集市为您收集整理的mysql表索引一些问题哈全部内容,希望文章能够帮你解决mysql表索引一些问题哈所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。