当前位置: 首页 > news >正文

石城网站建设wordpress page 2

石城网站建设,wordpress page 2,自贡建设局网站,WordPress页面批量生成如题 效率慢疑惑 效率慢 分页查询,发现效率很慢,然后发现是比较复杂的sql,CountJSqlParser45它不会帮忙优化掉,就是select多少字段它count的时候也还是这么多字段 框架里的用法是这样的 所以去看了CountJSqlParser45里面的代码,发现如果有group之类的,它就不帮忙把count优化… 如题 效率慢疑惑 效率慢 分页查询,发现效率很慢,然后发现是比较复杂的sql,CountJSqlParser45它不会帮忙优化掉,就是select多少字段它count的时候也还是这么多字段 框架里的用法是这样的 所以去看了CountJSqlParser45里面的代码,发现如果有group之类的,它就不帮忙把count优化一下,直接在外面套了一层count(0) 知道问题之后就是覆盖这个方法,所以在自己的下面新建了一个同路径同名的覆盖它 原来的代码是发现不是简单sql就直接不处理了,现在的逻辑是发现是PlainSelect但是不是isSimpleCount的情况下,把查询里面的select的普通字段都去除掉,新写了cleanSimpleField这个方法 逻辑很简单,如果是比较复杂的字段还留着,因为可能会影响结果,比如函数啊别名啊之类的,但是如果只是简单的字段都去掉,如果发现都是简单字段,那么直接用1来代替 public ListSelectItem cleanSimpleField(PlainSelect select){//因为查询太多的话会导致速度很慢,所以移除掉普通的字段,把肯能影响结果的字段留下来ListSelectItem newSelectItems new ArrayList();//遍历原来的select 然后把需要的留下for (SelectItem item : select.getSelectItems()) {//select列中包含参数的时候不可以去掉否则会引起参数个数错误if (item.toString().contains(?)) {newSelectItems.add(item);}//如果查询列中包含函数也不可以函数可能会聚合列if (item instanceof SelectExpressionItem) {Expression expression ((SelectExpressionItem) item).getExpression();if (expression instanceof Function) {String name ((Function) expression).getName();if (name ! null) {String NAME name.toUpperCase();if (skipFunctions.contains(NAME)) {//go on} else if (falseFunctions.contains(NAME)) {newSelectItems.add(item);} else {for (String aggregateFunction : AGGREGATE_FUNCTIONS) {if (NAME.startsWith(aggregateFunction)) {falseFunctions.add(NAME);newSelectItems.add(item);}}skipFunctions.add(NAME);}}} else if (expression instanceof Parenthesis ((SelectExpressionItem) item).getAlias() ! null) {//#555当存在 (ab) as c 时c 如果出现了 order by 或者 having 中时会找不到对应的列// 这里想要更智能需要在整个SQL中查找别名出现的位置暂时不考虑直接排除newSelectItems.add(item);}}}//都是简单的都被去掉了,那么就把原来的第一个拿来if (ObjectUtil.isEmpty(newSelectItems)){newSelectItems.add(new SelectExpressionItem(new Column(1)));}return newSelectItems;} 疑惑 照理说LocalMySqlDialect里面改成自己的新的类,不是CountJSqlParser45应该也行的,但是不知道为什么我把CountJSqlParser45改成自己新写的类不行,所以只能用覆盖的方式了 this.countSqlParser ClassUtil.newInstance(properties.getProperty(countSqlParser), CountSqlParser.class, properties, CountJSqlParser45::new); //改成下面这个不知道为什么不行 c this.countSqlParser ClassUtil.newInstance(properties.getProperty(countSqlParser), CountSqlParser.class, properties, MyCountJSqlParser45::new);
http://www.w-s-a.com/news/251352/

相关文章:

  • 网站建设需求文件学校网站建设方案及报价
  • 网站开发一般多少钱wordpress打赏赞插件
  • 做中国o2o网站领导唐山网站制作软件
  • 门户网站简介做网站一天能接多少单
  • 论坛类网站建设遵义网站制作外包
  • vps服务器购买网站小视频做网站怎么赚钱
  • 网站用图片wordpress同步发布
  • 织梦图片自适应网站源码网页美工的设计要点
  • 渝快办官方网站wordpress产品图片怎么改
  • 高端网站特色深圳建网站哪
  • 宝塔搭建网站软文小故事200字
  • 公司网站设计免费虚拟主机网站源码
  • 怎样做好网站用户体验申请网站空间
  • 网站建设优化公司招聘福州网站建设思企
  • 设计网站会员wordpress rss聚合
  • 网站建设过程中的收获html5官方网站开发流程
  • 网站建设-信科网络h5美食制作网站模板下载
  • 聊城九洲建设有限公司网站师大暨大网站建设
  • 烟台网站建设学校潍坊市建设监理协会网站
  • 大良营销网站建设资讯建设厅网站总经济师是干什么的
  • 网站优化推广软件网站制作公司dedecms
  • 在哪一个网站做社保申报百度小程序开发平台
  • 东莞网站建设_东莞网页设计网站色调代号
  • 濮阳住房和城乡建设部网站给别人做ppt的网站
  • 电子商务网站建设规划心得广告投放媒体
  • 淘宝店铺购买价格宝应百度seo
  • 同一虚拟主机 2个网站如果网站设计时
  • 网站维护的协议做网站 需要 域名 空间
  • 高安建站公司济宁哪里做网站最便宜
  • 南宁建站免费模板简单的html网页设计