首页 新闻 搜索 专区 学院

nodejs随笔

0
[已关闭问题] 关闭于 2015-05-04 09:29
 1 ###
 2 *  [获取部门信息]
 3 ###
 4 exports._fnGetDepartmentInfo = (req,res,next) ->
 5   # 被查询的人,array类型,格式为["zhangsan","lisi"]
 6   searchValues = req.body.query
 7   if _.isEmpty(searchValues)
 8     return res.json []
 9   name = req.session.user.name
10   password = req.session.user.pass
11   departmentInfo = []
12   ep = new EventProxy()
13   ep.after("userInfo",searchValues.length,(list)->
14     for li in list
15       if not li.err
16         departmentInfo = _.union(departmentInfo,li.msg)
17     return res.json departmentInfo
18   )
19   _.each(searchValues,(searchValue)->
20     chinaDomainAuth.fnRangeSearch name, password, searchValue.toString(),
21       fail : (err) ->
22         ep.emit "userInfo",{err:true}
23         res.json ["Too much data without displaying!"]
24 
25       success : (data) ->
26         # res.json data
27         ep.emit "userInfo",{err:false,msg:data}
28   )
问题补充:

mongodb

 1 javascript:LangSet('CN')
 2 
 3 
 4 
 5 1.在查询条件、排序条件、统计条件的字段上选择创建索引,可以显著提高查询效率。
 6 
 7 2.用$or时把匹配最 多 结果的条件放在最前面,用$and时把匹配最 少 结果的条件放在最前面。
 8 
 9 3.使用limit()限定返回结果集的大小,减少数据库服务器的资源消耗,以及网络传输的数据量。
10 
11 4.尽量少用$in,而是分解成一个一个的单一查询。尤其是在分片上,$in会让你的查询去每一个分片上查一次,如果实在要用的话,先在每个分片上建索引。
12 
13 5.尽量不用模糊匹配查询,用其它精确匹配查询代替,比如$in、$nin。
14 
15 6.查询量大、并发大的情况,通过前端加缓存解决。
16 
17 7.能不用安全模式的操作就不用安全模式,这样客户端没必要等待数据库返回查询结果以及处理异常,快了一个数量级。
18 
19 8.MongoDB的智能查询优化,判断粒度为query条件,而skip和limit都不在其判断之中,当分页查询最后几页时,先用order反向排序。
20 
21 9.尽量减少跨分片查询,balance均衡次数少。
22 
23 10.只查询要使用的字段,而不查询所有字段。
24 
25 11.更新字段的值时,使用$inc比update效率高。
26 
27 12.apped collections比普通collections的读写效率高。
28 
29 13.server-side processing类似于SQL查询的存储过程,可以减少网络通讯的开销。
30 
31 14.必要时使用hint()强制使用某个索引查询。
32 
33 15.如果有自己的主键列,则使用自己的主键列作为id,这样可以节约空间,也不需要创建额外的所以。
34 
35 16.使用explain,根据exlpain plan进行优化。
36 
37 17.范围查询的时候尽量用$in、$nin代替。
38 
39 18.查看数据库查询日志,具体分析的效率低的操作。
40 
41 19.mongodb有一个数据库优化工具database profiler,能够检测数据库操作的性能。可以发现query或者write操作中执行效率低的,从而针对这些操作进行优化。
42 
43 20.尽量把更多的操作放在客户端,当然这就是mongodb设计的理念之一。
Klaus.Fenng的主页 Klaus.Fenng | 初学一级 | 园豆:199
提问于:2015-05-04 09:25
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册