Tôi đồng ý với câu trả lời chung: sử dụng công cụ tìm kiếm như Sphinx (và giới hạn số lượng kết quả được trả lại); chúng được thiết kế để làm chính xác những gì bạn muốn.
Tuy nhiên, trong khi hàng triệu bản ghi có thể nghe có vẻ như rất nhiều, trước tiên bạn phải xác định những gì mất nhiều thời gian. Tôi có tình yêu lớn dành cho Sphinx và ThinkingSphinx - họ coi đó là một quá trình khá phức tạp và làm cho nó trở nên khá đơn giản và dễ dàng. Nhưng, cuối cùng, một công cụ tìm kiếm là một hệ thống khác để quản lý, cấu hình, tìm hiểu và biết. Nếu bạn không cần phải đến đó, nó sẽ không dễ dàng hơn, đúng không?
Đây có thể là truy vấn, có thể là thời gian để trả lại dữ liệu (limit
là bạn của bạn!). Hoặc có thể là bạn đang nhận được hàng trăm yêu cầu mỗi giây, có thể do độ trễ tự động hoàn tất quá ngắn - nếu tra cứu xảy ra ở mọi ký tự, người đánh máy nhanh hoặc nhiều người dùng có thể dễ dàng vượt qua máy chủ bằng truy vấn không cung cấp tiện ích cho người dùng.
Xem nhật ký Rails và xem điều gì đang thực sự xảy ra. Nếu đó là một vấn đề hiệu suất truy vấn đơn giản, thực hiện tìm kiếm văn bản đầy đủ phức tạp, thì, vâng, điều đó sẽ chậm và Sphinx sẽ đáng để nỗ lực. Cơ sở dữ liệu của bạn có một công cụ explain
, với một số công việc, có thể giúp bạn hiểu cơ sở dữ liệu đang làm gì để có được kết quả. Nó không phải là không phổ biến mà một chỉ số không được sử dụng.
Điều gì về bộ nhớ đệm? Memcached là một công cụ tuyệt vời. Hoặc thậm chí chỉ cần cài đặt kích thước bộ đệm của bạn cho cơ sở dữ liệu có thể cho phép nó sử dụng nhiều bộ nhớ hơn cho bộ nhớ đệm.
Nguồn
2012-03-14 19:28:15
Bạn có thể chia sẻ thêm một chút thông tin không? Bạn đang tìm kiếm bao nhiêu cột? Loại trường nào? Bạn có thể chia sẻ truy vấn bạn đang sử dụng ngay bây giờ không? Bạn chắc chắn nên nhìn vào một công cụ tìm kiếm văn bản đầy đủ, tìm kiếm đàn hồi là một công cụ tốt khác: http://railscasts.com/episodes?search=search – fatfrog
Tốc độ chậm như thế nào? Bạn có thể đăng một ý chính của nhật ký phát triển đường ray cho một yêu cầu tìm kiếm không? Câu trả lời cho câu hỏi của bạn phụ thuộc rất nhiều vào việc liệu thời gian được dành nhiều nhất trong việc truy vấn cơ sở dữ liệu, trả lại kết quả, cả hai, cái gì khác, vv Hồ sơ trước khi thay đổi mọi thứ! – carols10cents