F****n 发帖数: 3271 | 1 不久前有个项目要比较Lucene和主要RDBMS的search performance。因为老板想知道如
果把RDBMS当成NoSQL(就是Table Design的时候坚持denormalize) 用效果如何。经过
一段时间研究,
发现在其他条件不变的情况下单个column的search二者差不多,但多个fields/columns
的 query
RDBMS要慢的多 (e.g., select * from users where last_name='xxx' and email='
yyy")
进一步我发现RDBMS对一个Table在一个Query中居然一直只使用一个Index, 即使所有的
Column都有Index! 一开始以为是Query Planner根据selectivity的选择,但后来发现
根本不是这样:
1. 几乎所有的Queries, Query Planner都只会选一个Index,根本没有啥优化可言--像
上面那种简单的例子,即使用第二个Index可以提高几千倍的速度,也不会用。而
Lucene总是使用所有的Index然后sort-and-merge。Performance的差异主要就是这个简
单的原因。
2. 这个不光是某一个RDBMS的问题,几乎所有主流RDBMS,包括Oracle, MySQL, SQL
Server, Postgres, 都是这样。
那位说说这是啥原因? | c*****d 发帖数: 6045 | 2 Check my reply in db board | F****n 发帖数: 3271 | 3 Thanks. I replied your reply.
【在 c*****d 的大作中提到】 : Check my reply in db board
|
|