一个比较有意思的BUG,可能知识面受限,我认为是BUG,分类页同SPU产品展示

bug问题 · OneSmile · 于 4年前 发布 · 1868 次阅读

现在分类页同SPU产品并没有按照后台 这里的设置而生效,或者说只是在MYSQL 5.6 版本生效。我用的fec2.3.7版本,发现这个问题,然后我去GIT查看了最新版的 fec 发现最新实现逻辑代码是这样的https://github.com/fecshop/yii2_fecshop/blob/master/services/product/ProductMysqldb.php 测试发现新版的fec 这个分组查询方式只在MYSQL5.6及一下版本生效,我本地是5.7版本,生产服务器是5.6版本,随差资料发现排序如果不加limit 是不生效的改为如下 可以看到在1070行 加了limit 至于为什么是1500,我们产品需求是 分类页显示15个,自我预估 每个SPU的SKU约100个,所以这里定义为1500.这样在NYSQL5.7 上后台那个同一SPU产品显示最分值最高的说明是生效的。如果把这行去掉,那么只在5.6版本生效。因为生产服务器是5.6版本,所以本地最终代码 生产服务器能用,本地爱咋咋地吧。大佬来看下这样是不是最优解

本文由 OneSmile 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。

共收到 6 条回复
Fecmall#14年前 0 个赞

你搜一下 mysql5.7 group的资料查查,mysql 5.7的group有一些变动

看一下是否是某些参数设置的问题。

OneSmile#24年前 0 个赞

@Fecmall #1楼 我查过的,5.7 对group by默认开启了这个 ONLY_FULL_GROUP_BY,我本地已经把这个关闭了,不关闭 原生语句 group by 就无法使用, 但是排序这里必须要limit 我查执行计划,看到没有 limit 的时候,少了一个 DERIVED 操作 估计是内部优化了,认为 ORDER BY 在没有LIMIT情况下忽略,有 LIMIT 限制涉及排序后的结果,不会忽略 ORDER BY。

OneSmile#34年前 0 个赞

同时,这个 样子少查询一次,多多少少优化点性能

Fecmall#44年前 0 个赞

1.你这个不是通用解决办法

2.我找时间测试一下啊,是否是这样

3.如果关注性能,就不要用mysql了,用mongodb services,后台配置就可以切换:http://www.fecmall.com/doc/fecshop-guide/develop/cn-2.0/guide-fecshop-2-service-database.html

OneSmile#54年前 0 个赞

@Fecmall #4楼 关于用什么数据库,这个就不讨论了,各有各的需求。通用解决方法,查出来丢到内存,用数组KEY值覆盖玩法也可以解决,看需求,我认为一切脱离实际需求的开发,都是阳春白雪

Fecmall#64年前 0 个赞

@OneSmile [#5楼](#comment5) 如果你认为你的方案是通用的,可以详细写一下,上面写的看不懂/

你解决的是你自己的需求,fecmall是解决大多数人的需求,立场不一样。

添加回复 (需要登录)
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册
Your Site Analytics