Tôi có một bảng trong cơ sở dữ liệu MySQL mà từ đó tôi muốn chọn hàng có dấu thời gian gần nhất với một dấu thời gian nhất định.Cách hiệu quả nhất để tìm số nguyên gần nhất trong MySQL?
time
là cột dấu thời gian (dấu thời gian UNIX số nguyên). Tôi đã chọn 1250710000
tùy ý.
Đây là câu hỏi mà tôi đã đưa ra, và tôi tự hỏi nếu có một cách hiệu quả hơn để làm điều đó:
SELECT *, ABS(time - 1250710000) AS time_dist FROM table
ORDER BY time_dist ASC LIMIT 1
Đây có phải là cách tốt nhất để làm điều đó?
Chết tiệt! Tôi vừa mới gõ chính xác điều đó! – NickZoic
Ý tưởng tuyệt vời, nhưng dấu thời gian tham chiếu ('1250710000' trong trường hợp này) không nằm trong cùng một bảng. Có nói rằng, tôi cho rằng truy vấn này là về cùng về hiệu quả? – heyitsme
** @ cyouung: ** Truy vấn này không giống nhau về hiệu quả. Truy vấn của bạn thực hiện 'ABS (thời gian - 125071000)' trên * mọi hàng đơn *. Miễn là bạn có chỉ mục trên 'thời gian', truy vấn này sẽ không bao giờ đọc nhiều hơn hai hàng. –