2016-06-03 2 views
0

У меня есть таблица со 10000 строками и 2 столбцами INTEGERS (id,start_timestamp,speed_qty_per_second).MySQL получить данные по вычисленному результату

Когда MySQL SELECT, мне нужно рассчитать результаты по выбранным значениям. я сделать расчет:

$duration_time = time() - $start_timestamp; 
$actual_qty = $duration_time * $speed_qty_per_second; 

нужно выбрать данные из таблицы WHERE $actual_qty > 100. К этим данным будет обращено большое количество пользователей на часто посещаемых сайтах, например, каждый раз в секунду для каждого пользователя.

Что такое наилучший подход, для хранения кэшированных данных?

  • MEMORY MySQL стол?
  • Файл (csv, XML)?
+2

Отметка хранится в виде целого числа? Остерегайтесь, [2038] (https://en.wikipedia.org/wiki/Year_2038_problem). – 1615903

+0

Не могли бы вы добавить подробную информацию о том, какой интерфейс? Если это веб-приложение, memcached и управление детализацией, когда принять изменение во времени() (например, один раз в секунду передавать живой запрос через бэкэнд), или можно нажать на уровне sql условие> 100 на вычисляемое количество (агрегат) в предложение наличия, или вместо использования бэкендов csv/xml вытесните базу данных sqlite, которую вы также можете запросить через sql. Пожалуйста, еще несколько деталей, так как ** наилучший ** подход будет зависеть от этого. Думаю, лучшего глобального решения нет. – Dilettant

ответ

0

Я думаю, что SQL решение может быть полезным

select 
    id, 
    start_timestamp, 
    speed_qty_per_second, 
    timediff(now(),start_timestamp)), 
    timediff(now(),start_timestamp))* peed_qty_per_second 
from your_table 
+0

это самый простой пример, моя формула намного сложнее подсчитать http://math.stackexchange.com/a/1796884/341708 – Martin

+1

ну, это предложение, когда вы можете выполнить расчет в запросе, сделайте это .. и я могу Я не знаю, как уважать то, что вы публикуете. – scaisEdge

Смежные вопросы