2012-08-24 88 views

回答

2

试试这个吗?

@items = AddressBook.select('DISTINCT email').where(:domain => 'hospital.com') 
+0

我想,以避免在数据库上这样做,因为我没有对电子邮件领域的指数,这将是非常繁重的?\ – AnApprentice

+0

'DISTINCT'是一个非常标准的SQL语句。我敢打赌你的数据库可以处理它很好。试着用两种方法来查看控制台中的毫秒数,看看它们在相当有代表性的一组数据上会产生什么样的差异。 –

+0

@AnApprentice,我第二个克里斯。 “where”条件显着缩小了结果集,因此DB SQL方法更好。作为一个经验法则,当我必须在SQL代码和Ruby代码之间进行选择时,我总是选择SQL代码。 –

3
@items = AddressBook.select(:email).where(:domain => 'hospital.com').uniq 

相同的SQL生成,但不同的语法