起步软件技术论坛
搜索
 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 5218|回复: 15

[处理中3] Query时不查询指定的列如何实现?

[复制链接]

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
发表于 2017-3-16 16:42:37 | 显示全部楼层 |阅读模式
本帖最后由 ufo1982ufo 于 2017-3-16 16:45 编辑

在w文件中我的baasData组件没有把数据库中的所有列,因为有的列存有图片,很大! 微信截图_20170316163528.png
都是在前端页面XHR的时候却查询了所有的列,一直在pending卡住 微信截图_20170316164358.png

,我想自定义一个action把那一列排除如何处理?

微信截图_20170316163425.png



发表于 2017-3-16 17:15:36 | 显示全部楼层
1.手动修改源码!将baasData不需要的列删除! 这样应该就不会再查了!
2.queryAction 中 columns 属性,手写指定 要查询的列! 逗号隔开
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-16 17:46:43 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-3-16 17:49 编辑

参考了中级的教程,对baasdata查询的参数进行了赋值:
s1.png

在调试中发现,设置的参数的却没有带上其他的列!
s2.png

但是发现耗时还是一样的,也是pending。
s3.png

用wex5带的heidisql远程连接数据库后进行查询,分别是不带大数据那一列和带大数据的耗时对比!
s4.png

这样看来,其实数据的却传输了,也就是去除后都没有起作用。导致页面非常卡顿。就是3.87秒,需要如何处理?
回复 支持 反对

使用道具 举报

发表于 2017-3-16 18:02:24 | 显示全部楼层
ufo1982ufo 发表于 2017-3-16 17:46
参考了中级的教程,对baasdata查询的参数进行了赋值:

你自己先试试!在数据库中执行sql 语句查询会慢吗??
数据量大,建议分页查询,请问你是查询多少条数据呢??平台案例查询会慢吗??对比下是哪儿引起的问题??
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-16 18:56:23 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-3-16 19:07 编辑
liangyongfei 发表于 2017-3-16 18:02
你自己先试试!在数据库中执行sql 语句查询会慢吗??
数据量大,建议分页查询,请问你是查询多少条数据 ...

在服务器端的heidisql查询,2种条件都是耗时0.000sec。
只有70条数据,我都是分页20或者10查询。
如果客户端远程用heidisql查询的话去掉指定的列耗时0.031sec,如果不去掉指定的列耗时3.703sec。
在网页中去掉指定的列0.086sec,不去掉的话3.84sec。
现在考虑就是返回的数据应该是包含着我不想要的列,就是怀疑那些参数根本就没有起起作用,重复实验多次都是这个情况!
回复 支持 反对

使用道具 举报

发表于 2017-3-17 10:05:42 | 显示全部楼层
ufo1982ufo 发表于 2017-3-16 18:56
在服务器端的heidisql查询,2种条件都是耗时0.000sec。
只有70条数据,我都是分页20或者10查询。
如果客户 ...


1.手动修改源码!将baasData不需要的列删除! 这样应该就不会再查了!
2.queryAction 中 columns 属性,手写指定 要查询的列! 逗号隔开

这两个方法都试过了吗??这样的话就是只查询指定列的!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-20 18:09:14 | 显示全部楼层
liangyongfei 发表于 2017-3-17 10:05
1.手动修改源码!将baasData不需要的列删除! 这样应该就不会再查了!
2.queryAction 中 columns 属性, ...

随着问题的深入,我按照您的方法:
1、修改了代码。
  1.         Model.prototype.guideDataRefreshCreateParam = function(event){
  2.                 event.param.columns ={
  3.                         "goods_id":{"name":"goods_id","type":"Integer"},
  4.                         "title":{"name":"title","type":"String"},
  5.                         "img_url":{"name":"img_url","type":"String"},
  6.                         "create_time":{"name":"create_time","type":"Date"},
  7.                         "click_count":{"name":"click_count","type":"Integer"},
  8.                         "mall_name":{"name":"mall_name","type":"String"},
  9.                         "price":{"name":"price","type":"String"}
  10.                 };
  11.         };
复制代码

在查询中的却没有查询指定的列。不过还是慢,而且等待的时间也是一样的!
2、我换成sqlquery来做,在columns写了指定的列,还是一样,慢,等待的时间还是一样的!

后来发现里面有个ttfb时间,每次都需要等待3秒以上,于是我了解了一下TTFB(TTFB (Time To First Byte),是最初的网络请求被发起到从服务器接收到第一个字节这段时间,它包含了 TCP连接时间,发送HTTP请求时间和获得响应消息第一个字节的时间。)。
后来我用教程中的方法,这个TTFB基本就减少到80毫秒左右,如果数据库在本地,后面那个contentdownload时间就是0,如果在远程服务器上就是资源下载的时间。
QQ截图20170317014228.png



再到后来我发现只要我数据库中的字段存在着base64的内容,用wex5的baasdata默认query(sqlquery也一样)基本就有这个TTFB时间存在。即使在本地studio的环境下都有3秒以上的时间,资源其实只用了0秒,如果在远程TTFB就是3秒还要加上资源下载的时间,网页(app)就需要卡住那么几秒!

尽管数据库中有base64的内容,如果按照教程的自定义action来做的话,TTFB时间就可以控制在90毫秒以下。
微信截图_20170320175847.png

所以不确定这个TTFB是不是由于对base64进行处理产生的,然而新的问题产生了,我用自己自定义的action来做,的却可以降低TTFB的时间,但是每次我的数据加载到baasdata组件都是全部加载,看了论坛里的做分页都是加载到data里,如果我要在这个action里要如何来处理?
  1.         Model.prototype.contentDataCustomRefresh = function(event){
  2.                 debugger;
  3.                 var datenow = this.mDateNow;
  4.                 var me = this;
  5.                 justep.Baas.sendRequest({
  6.                   "url" : "/mfxxl/mfxxlad",                            //服务文件路径
  7.                   "action" : "queryAdAction",                 //调用动作的名称
  8. //                  "async " : false,                             //同步请求
  9.                   "async " : true,                             //异步请求
  10.                   "params" : {
  11.                           tableName : "ad",               
  12.                           column : "ad_id,ad_link,ad_order,ad_type,click_count,end_date,img_url,is_open,start_date FROM ",
  13.                           condition : " where ad_type = 41 AND is_open = 1 AND start_date <= '" + datenow + "' AND end_date >= '" +datenow + "'"
  14.                   },           //设置参数
  15.                   "success" : function(data) {                 //设置执行成功的回调方法
  16.                     debugger;
  17.                     me.comp("contentData").loadData(data);   //调用数据组件的loadData方法装入数据
  18.                   }
  19.                  });
  20.         };
复制代码
我的页面用了scrollview,我也获取到了sys.count的值,就是不知道如何可以实现分页加载!




回复 支持 反对

使用道具 举报

发表于 2017-3-21 10:34:39 | 显示全部楼层
ufo1982ufo 发表于 2017-3-20 18:09
随着问题的深入,我按照您的方法:
1、修改了代码。

自定义实现分页,参考:http://docs.wex5.com/wex5-ui-question-list-2028/

data.offse 表示当前从第几条数据开始加载的!limit表示每页加载几条数据!!
蚕食可以传递到后台!!但是希望sql语句的字符串是后台拼接的!!不要在前端js中拼接sql语句!否则,会有安全性问题的!

意思是!如果你不使用baas64的字段! 查询时间就会短下来!有base64字段查询就会慢对吧!!
因为这个属于二进制数据!表示的是图片或者其他大数据量信息的!当然就会慢!!建议不要存储为base64格式的数据!!如果存储文件可以使用attachmentSimple组件!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

64

主题

321

帖子

679

积分

高级会员

Rank: 4

积分
679
QQ
 楼主| 发表于 2017-3-21 11:08:22 | 显示全部楼层
本帖最后由 ufo1982ufo 于 2017-3-21 11:14 编辑
liangyongfei 发表于 2017-3-21 10:34
自定义实现分页,参考:http://docs.wex5.com/wex5-ui-question-list-2028/

data.offse 表示当前从第几 ...

1、我试试这个分页如何实现。
2、您指的安全性问题是指sql注入吗?
3、关于base64编码,我也是不得已的选择,本来希望使用richtext(好像只能bex5),后来选择了summernote。如果使用之前的curd或者sqlquery的话,基本就是TTFB线性增长(base64条数越多,时间越长)。如果用自定义action,我试了4条数据,共3M左右,TTFB时间好的时候60毫秒,不好的时候200毫秒,对比使用curd和sqlquery已经非常喜人了!那么除了summernote外,wex5有什么组件可以编辑这些图文混排的内容。使用attachmentsimple不好进行图文一起编辑啊! 微信截图_20170320175847.png

回复 支持 反对

使用道具 举报

发表于 2017-3-21 14:12:34 | 显示全部楼层
ufo1982ufo 发表于 2017-3-21 11:08
1、我试试这个分页如何实现。
2、您指的安全性问题是指sql注入吗?
3、关于base64编码,我也是不得已的选 ...

2.确实,js毕竟可以在前端被修改!容易sql注入
3.WeX5 确实没有提供图文一起编辑的组件! attachmentsimple只用于图片的上传!获取上传图片的URL可以参考:http://docs.wex5.com/wex5-ui-question-list-2093
你可以使用 div的 bind-html 绑定一个data字段! 给这个字段赋值的时候,只需要添加一个a标签 里面指定图片的URL地址! 就可以做到图文共同显示了!!
qq:1912779713
WeX5教程--WeX5下载
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|X3技术论坛|Justep Inc.    

GMT+8, 2024-9-23 20:25 , Processed in 4.756482 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表