2015-05-19 3 views
-2

Я использую grails 2.3.8 с базой данных mysql. У меня есть этот класс домена с 200 000 записей. Требуется 18 секунд для извлечения.GORM Простой запрос, но ОЧЕНЬ медленный

class Alert { 
    Long id 
    int recorded_at 
    int responded_at 
    String source_name 
    String source_type 
    String check_name 
    String label 
    String priority 
    String status 
    String message 
    String remarks 
    Date dateCreated 
    Date lastUpdated 

    static mapping = { 
     table "alerts" 
     version false 
     dateCreated column: "created_at" 
     lastUpdated column: "updated_at"  
     message type: "text" 
     remarks type: "text" 
     recorded_at index: 'Recorded_Atx' 
     //sort recorded_at: "desc" 
    } 

    static constraints = { 
     responded_at(nullable:true) 
     message(nullable:true) 
     remarks(nullable:true) 
    } 
} 

def alerts = Alert.findAll() 

Почему?

+2

Каково ваше сравнение, которое позволяет оценить, что это медленно. и вам действительно нужно материализовать все эти строки? – cfrick

+3

GORM медленный, потому что он создает 200 000 объектов. Точно так же, как любой ORM будет медленным, если потребуется создать 200 000 объектов. – christopher

+0

Любой способ сделать это быстро? – user903772

ответ

0

Это из-за MySQL, до тех пор, пока все результаты не будут возвращены пользователю. Базы данных, такие как держатели поддержки Oracle и Postgres, которые позволяют возвращать результаты пакетами. Затем мы можем вернуть результаты кускам пользователю.

Смежные вопросы