跳转到主内容
websoft网络软件专家 - 深耕网络技术,打造实用软件!

mysql 表 索引一些问题哈

谢谢大家了, 描述好像有点不清楚,主要问题是 索引不晓得要怎么加才好,而且数据多了要怎么处理 支付通知表 结构 字段数据类型长度是否为空默认值pk无符号说明idint10YY自增IDorder_serialvarchar255渠道订单号(不确定长度类型)cp_serialvarchar255游戏内部订单号(不确定长度类型)order_moneyfloat8,2订单金额channel_idsmallint6Y渠道IDgame_idsmallint6Y游戏IDpay_stausetinyint10Y渠道支付状态 0为支付失败 1为支付成功pay_msgvarchar255渠道支付信息notice_statustinyint10Y游戏通知返回状态 0为 未通知游戏方 1:成功 2:金额不符 3:订单号不存在 4:重复订单 5:用户不存在 6:数据验证失败notice_msgvarchar255游戏通知返回信息start_date_timeint10Y接收订单时间 需求
一 插入 (一) 插入了时候 需要判断 渠道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]
问题 PHP 8.5.5 PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。 下载
(一) 目前给渠道订单号 游戏内部订单号 加上联合索引 方便插入了时候快速查到是否存在 (二)汇总查询中 **按天查询 目前想到了 只有 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无符号说明idint10YY自增IDorder_serialvarchar255渠道订单号(不确定长度类型)cp_serialvarchar255游戏内部订单号(不确定长度类型)order_moneyfloat8,2订单金额channel_idsmallint6Y渠道IDgame_idsmallint6Y游戏IDpay_stausetinyint10Y渠道支付状态 0为支付失败 1为支付成功pay_msgvarchar255渠道支付信息notice_statustinyint10Y游戏通知返回状态 0为 未通知游戏方 1:成功 2:金额不符 3:订单号不存在 4:重复订单 5:用户不存在 6:数据验证失败notice_msgvarchar255游戏通知返回信息start_date_timeint10Y接收订单时间 需求
一 插入 (一) 插入了时候 需要判断 渠道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] (三) 订单明细中 索引要怎么加 条件就是一个时间是必须了 而其他条件都是非必须了 联合查询 要怎么加 不懂得
问题三 如果要分表 如何分 查询好像又是一个问题 上面就是碰到了问题,麻烦大家了 ?????换个浏览器就页面不存在?

相关文章