Mam tabelę w bazie danych MySQL, z której chcę wybrać wiersz z najbliżej datownika do innego danego znacznika czasu.Najbardziej skuteczny sposób na znalezienie najbliższej liczby całkowitej w MySQL?
time
to kolumna znacznika czasu (całkowity znacznik czasu UNIX). Wybrałem 1250710000
arbitralnie.
To jest kwerenda, że mam wymyślić, i zastanawiam się, czy jest bardziej efektywny sposób to zrobić:
SELECT *, ABS(time - 1250710000) AS time_dist FROM table
ORDER BY time_dist ASC LIMIT 1
Jest to najlepszy sposób to zrobić?
Cholera! Właśnie pisałem prawie to! – NickZoic
Świetny pomysł, ale referencyjny znacznik czasu ("1250710000" w tym przypadku) nie znajduje się w tej samej tabeli. Powiedziawszy to, zakładam, że to zapytanie jest mniej więcej takie same pod względem wydajności? – heyitsme
** @ cyouung: ** To zapytanie nie jest takie samo pod względem wydajności. Twoje zapytanie składa się z 'ABS (time - 125071000)' on * każdego wiersza *. Dopóki masz indeks "time", to zapytanie nigdy nie będzie czytać więcej niż dwa wiersze. –