只显示主题贴
sslaowan 写道我觉得对于软件专业科班出身的人而言,此帖应该属于入门帖吧,尤其是实体关系建模与对象建模的历史渊源,很多软件工程的书都会提及,并且Robbin号称精通Hibernate,怎么会到2007年末才接触到三大范式这种在关系数据库理论中最为基础的知识呢?
懂实战的不一定知道他平时掌握的原则用书面的东西怎么表达,或者说,他突然有一天会发现,原来他们一直说的那些东西,就是所谓的这些东西...
- 进入论坛 Java 版
diogin 写道
只要索引设置得好,性能根本不是问题:
mysql> EXPLAIN SELECT * FROM user INNER JOIN note ON user.user_id = note.user_id WHERE user.user_id = 1234567;
2 rows in set (0.00 sec)
mysql> EXPLAIN SELECT * FROM note INNER JOIN user ON note.user_id = user.user_id WHERE note.user_id = 1234567;
2 rows in set (0.00 se ...
- 进入论坛 Java 版
在做项目的过程中,我找到了一点不匹配的地方,那就是对象是数据与操作的集合,对象可以只有操作而没有数据,而数据表是数据的集合,只有在有数据的情况下才有存在的意义。
面向对象的目标应该是为了避免数据和操作的冗余,而数据库范式的目标仅仅是避免数据的冗余。
比如:Resource <- SpiritResource,
Resource <- EntityResource,
SpiritResource <- User, Organization, OrganizationalUnit...
EntityResource <- WebSite, ...
- 进入论坛 Java 版
引用算是一次战略计划,还需要自己做。
战略计划?....NET或者Java转PHP?有没有经过比较?如果是都上升到一个战略计划的高度,纯PHP的构架是否适合?一些简单的问题:
1、数据库连接池你准备怎么做?pconn?conn?
2、数据库层用什么做?PDO?PDO成熟吗?PDO-XXX成熟吗?
3、准备面向对象去做PHP?类体系要做多大?这么大的类体系在加载的时候通过什么方式加载?加载效率又是怎么样的?
......
- 进入论坛 软件开发和项目管理 版
bulargy 写道robbin 写道
我仔细看了一遍你贴出来的执行计划,终于发现你关联查询慢的根源了!请看:
s.guid=r.stu_guid
你的关联查询关联外键上面根本就没有建立索引!这种关联查询会造成你的student表和resume表全表扫描,难怪会这么慢!
给student表的guid字段建立索引,然后给resume表的stu_guid字段也建立索引,再查询一遍,我保管你1秒钟查询完毕
期待firmgoal 的实际测试结果~~~~
我上面已经答复了啊,测试的时候就是已经有外键索引了。
- 进入论坛 Java 版
blowfisher 写道你的表记录总量有多少? 不会是天文数字级的吧...
按道理超过1S就不太正常了,
我只对千万级的表测试过多种关联查询,完全可以做到毫秒内完成,前提是查询规则能合理用上索引。
试一下看这个?
select s.guid, ROWNUM as rowno
from student_base_info s
join resume r on s.guid=r.stu_guid
where r.resumetime > to_date('2007-12-01','yyyy-mm-dd') AND rowno between 10000 and ...
- 进入论坛 Java 版
robbin 写道firmgoal 写道我希望达到的目标,数据库查询返回应该是毫秒级的(<1s)。在实践中发现大表关联基本上没有毫秒级的,因此,我还是强调我的观点,可以通过冗余来避免关联,减少IO。
我手里没有Oracle数据库,所以没有办法做相应的测试,但是我觉得你的查询结果不可思议,查询毫无道理的慢,除非你的student表和resume表的字段太多,或者包含了大字段。像我在MySQL上面做的查询,但凡有效利用索引的关联查询,都不会超过1秒钟。
我建议你再测试一下单表查询,单独select student表和select resume表,加上同样的where条件和分页语句,看看执 ...
- 进入论坛 Java 版
我希望达到的目标,数据库查询返回应该是毫秒级的(<1s)。在实践中发现大表关联基本上没有毫秒级的,因此,我还是强调我的观点,可以通过冗余来避免关联,减少IO。
- 进入论坛 Java 版
blowfisher 写道引用select * from student s join resume r on s.guid=r.stu_guid where r.resumetime > to_date('2007-12-01','yyyy-mm-dd')
已选择86232行。
已用时间: 00: 02: 24.09
返回的结果集86232行,这么大,又是 SELECT ALL ,能快到哪去,
这样的测试没有实际意义,不Crash已经很幸运了
加上 LIMIT 50, 再测吧
我承认,全选出来占了太多IO,不过光LIMIT没有意义,COUNT STOP很快,弄个有意义一点的,翻页:
...
- 进入论坛 Java 版







评论排行榜