2012-03-30 39 views
9

Tôi muốn biết làm thế nào tôi có thể đếm tất cả hồ sơ của một thực thể trong một kho lưu trữ học thuyếthồ sơ thuyết đếm bảng

tôi tìm thấy giải pháp này nhưng không chắc chắn nếu điều này là tốt như vậy:

public function findAllCounted() 
{ 
    return $this->getEntityManager() 
     ->createQuery('SELECT COUNT(a.id) FROM KSRArticleBundle:Article a') 
     ->getSingleScalarResult(); 
} 

Best Regards, Bodo

Trả lời

11

Bạn không cần phải dựa vào một lĩnh vực cụ thể, vì vậy đây sẽ làm:

+0

Cảm ơn bạn rất nhiều :) – bodokaiser

5

Chỉ cần cho các hồ sơ, nó thường là tốt hơn để đếm trên id:

SELECT COUNT(a.id) FROM KSRArticleBundle:Article a 

là tốt hơn một chút

+0

Tại sao nó tốt hơn? – Chausser

+2

Bởi vì MySql không phải liệt kê tất cả các thông tin trên các dòng, anh ta chỉ đếm các id. Nó là tốt hơn trong MyISAM, tôi không biết nếu nó vẫn đứng trên InnoDB mặc dù. –

+0

+1 để tính số .id - @Chausser Vì ID được lập chỉ mục nên truy vấn chỉ tính chỉ mục thay vì tất cả các hàng dữ liệu ... – Prof83

0

SQL cũng cho phép này:

SELECT COUNT(1) FROM KSRArticleBundle:Article a 

Bằng cách này, cơ sở dữ liệu không thậm chí không phải lấy bất kỳ dữ liệu nào từ bảng, thậm chí còn nhanh hơn. Nghĩa đen những gì nó nói: chọn số của hằng số '1' cho mỗi bản ghi. Tốc độ tăng nhỏ cho các máy chủ cơ sở dữ liệu được thiết kế tốt và bạn không phải nhớ bất cứ điều gì về bảng khi viết bài này.