#mysql
#mysql
Вопрос:
У меня есть таблица с именем «MYTABLE», которая выглядит следующим образом:
ID | TIMESTAMP | DATA
1 | 150233939 | xxx
2 | 150233940 | xxx
3 | 150233941 | xxx
4 | 150233942 | xxx
5 | 150233943 | xxx
6 | 150233944 | xxx
7 | 150233945 | xxx
8 | 150233946 | xxx
9 | 150233947 | xxx
Я могу легко получить все элементы, используя:
SELECT * FROM MYTABLE
Но эта таблица станет массивной и содержит точки данных, которые будут показаны на графике. Поэтому вместо получения ВСЕХ точек данных я хочу, чтобы они были разнесены. Например, я хочу запрос, который возвращал бы
1,3,5,7,9
Или:
1,4,8,9
Есть ли способ сделать это на уровне запроса?
Обновить
Я смог получить данные следующим образом:
SELECT * FROM MYTABLE where mod(id,5) = 0
Это довольно хорошо разделяет данные, но это ОЧЕНЬ МЕДЛЕННО. Есть ли другой способ сделать это быстрее?
Комментарии:
1. Добавьте в соответствии с WHERE —
WHERE id IN (1,3,5,7,9)
, например.2. Гарантируется ли непрерывность последовательности (без перерывов)? Если это так, см. MOD() (и UNION) вы хотите, чтобы результаты модуля были объединены с первым и последним результатами.
3. У меня есть огромный набор точек данных. По одному каждую секунду. Я пытаюсь получать данные раз в минуту или раз в 5 минут, чтобы загрузка графика не занимала год.