V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  keakon  ›  全部回复第 29 页 / 共 55 页
回复总数  1087
1 ... 25  26  27  28  29  30  31  32  33  34 ... 55  
2011-12-08 23:25:51 +08:00
回复了 roamlog 创建的主题 程序员 关于《Rails Is Not For Beginners》,我有话要说
貌似应该翻译成:Rails不适合民工程序员
2011-12-08 22:44:57 +08:00
回复了 Mianco 创建的主题 Google App Engine 关于模型设计时的小问题
如果需要搜索的话,物理限制是500字节(UTF-8编码)
原来支持FAT32么…不知道NTFS能否不丢失数据直接转FAT32
2011-12-07 14:31:54 +08:00
回复了 sayori 创建的主题 PHP 学习中,问一个比较愚蠢的问题
用EditPlus试试吧==
2011-12-07 14:13:06 +08:00
回复了 clino 创建的主题 问与答 话说有没有小规模的网站使用 sqlite 作为数据库后端?
sqlite的速度比大多数数据库更快,资源占用更少,也不需要root权限去安装,随便找个虚拟主机就能用,所以在并发性要求不高的场合还是很实用的。
2011-12-06 00:59:51 +08:00
回复了 douyacai911 创建的主题 问与答 我应该学C,C++还是JAVA?
学好日语就行了……
2011-12-06 00:58:46 +08:00
回复了 likai 创建的主题 程序员 参考网上的评论给自己选的c++入门书.大牛帮看是否合理
只推荐Effective C++系列…
2011-12-03 15:42:42 +08:00
回复了 chenluois 创建的主题 V2EX V2EX 的点击计数是怎么计算的呢?
因为是缓存html片段=。=
2011-12-03 13:53:10 +08:00
回复了 jckwei 创建的主题 Python First China PyCon 直播,没去上海的快看
身在上海的也在看=。=
2011-12-03 12:22:52 +08:00
回复了 OnlyBlue 创建的主题 Python 这里的scoping和threading是什么意思?
正文里就提到一次scoping,只能当作用域解释。线程可以访问自己的变量,并且共享进程的全局变量。
@wt_xp 那就弄成RMB用户的特权吧…
2011-12-02 18:48:42 +08:00
回复了 OnlyBlue 创建的主题 程序员 程序开发中的一个术语“闭合”是什么意思?
@frittle 不是不修改原有的代码,而是不修改原有的接口。不过对于支持缺省参数的语言,我觉得增加缺省参数也没关系。
2011-12-01 18:09:05 +08:00
回复了 eric_zyh 创建的主题 MySQL 求助 - 关于MYSQL关联查询索引的走向问题及优化方案
@eric_zyh 发现不需要指定索引,直接用STRAIGHT_JOIN就可以设置连接的顺序了。
http://dev.mysql.com/doc/refman/5.6/en/select.html
2011-12-01 14:20:50 +08:00
回复了 eric_zyh 创建的主题 MySQL 求助 - 关于MYSQL关联查询索引的走向问题及优化方案
@eric_zyh 从这个例子看来,结果集越小的越先执行。然后选择覆盖字段最多的索引。而临时表和排序的开销好像忽略了,不过这也和结果集并不大有关。

另外,刚想起为什么关注的人少时,时间会猛增了。如果没有达到30条记录,就相当于遍历了a.type=107的2000多条记录来连接;但如果关注得多,很快就找到了30条,后面的连接就无需执行了。
而在第一种策略中,连接次数和关注的人数相同,所以性能刚好相反。
2011-12-01 06:18:34 +08:00
回复了 eric_zyh 创建的主题 MySQL 求助 - 关于MYSQL关联查询索引的走向问题及优化方案
@eric_zyh 做了个测试,比较了一下这2种执行策略。

考虑b.userid = 13 and a.type=107。一般的用户不会关注那么多人,所以b表的结果集一般会比a表少,先查询它更快(不考虑排序的情况下)。
这种情况下b表需要(userid, reuserid)或(userid)上的索引,而a表需要(userid, type)或(userid)上的索引。
由于a表后查询,所以无法使用add_time上的索引来排序,需要filesort。很显然,该用户关注的用户越多,这个排序就越费时。

当使用use/force index来指定使用(type, add_time, userid)或(type, add_time)上的索引时,就会变成先查询a表了。
此时会选出a.type=107的所有记录,并且它已经按add_time排序了。如果索引中还有userid的话,就形成索引覆盖了。
接下来还有2种策略:b可以先连接,再过滤userid = 13,这需要(reuserid, userid)或(reuserid);也可以先过滤userid = 13,再连接,这需要(userid, reuserid)或(userid)。
很显然,结果集越小的就应该越先执行,如果a.type=107的数目不超过3000的话,就可以用前者。这里假设每种type都占1/8,那么应该是18万/8,约2000多。
这种策略的缺点就是如果该用户关注的人很少,也需要取出这么多条记录,显得很不划算。极端地说,假如这个用户没有关注任何人,这个操作也很费时。

考虑到正常的用户关注人数应该在1000以内,超过的基本上都是机器人。而排序1000条记录的表应该是可以接受的。
所以使用第一种方式处理,一般来说是比较合适的。

我用innodb测试了一下,表结构如下:
CREATE TABLE a (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, userid MEDIUMINT UNSIGNED, type TINYINT(3) UNSIGNED, add_time INT UNSIGNED) ENGINE=InnoDB;
CREATE TABLE b (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, userid MEDIUMINT UNSIGNED, reuserid MEDIUMINT UNSIGNED) ENGINE=InnoDB;

然后往a表插入了361463条数据,b表776892条(插入时忘记给(userid, reuserid)加唯一索引了)。其中用户id为1~50000。
某个用户在b中有3000条记录,这3000条记录对应地在a表中有2432条记录,查询前30个用时0.02秒。而如果用户只关注1个人,用时0.00秒。
使用第二种策略时用时0.01秒,但如果用户只关注1个人,用时0.19秒。
2011-11-30 19:04:36 +08:00
回复了 eric_zyh 创建的主题 MySQL 求助 - 关于MYSQL关联查询索引的走向问题及优化方案
@eric_zyh

可以试试给a表加userid,type,add_time DESC联合索引。
检查一下2个表的userid长度是否一致。
另外,b表怎么查出来这么多行,难道13这个用户关注了6000多人?
2011-11-30 12:06:34 +08:00
回复了 yqjun 创建的主题 问与答 chrome扩展不能用在本地文件??
chrome://settings/extensions里开启Developer mode,找到你的扩展,勾选Allow access to file URLs就行了
2011-11-30 02:38:29 +08:00
回复了 Kaiyuan 创建的主题 问与答 mac的系统偏好设置里设置永不睡眠
因为平时你可能希望它不用时休眠,但看电影时不想专门跑去设置一番=。=
2011-11-30 00:38:16 +08:00
回复了 cfan365 创建的主题 问与答 js如何自动click某个位置中的固定坐标?
没法实现,JavaScript的执行环境和Flash不同,它只知道DOM元素,不知道Flash容器里的按钮是什么玩意。必须由后者在ExternalInterface中注册一个函数,将API暴露出来后,才能让前者调用。
1 ... 25  26  27  28  29  30  31  32  33  34 ... 55  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1092 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 37ms · UTC 23:31 · PVG 07:31 · LAX 15:31 · JFK 18:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.