Mysql
 sql >> база данни >  >> RDS >> Mysql

дизайн на таблица + SQL въпрос

Не виждам защо трябва да имате нужда от синтетичния ключ, така че вместо това ще използвам тази таблица:

CREATE TABLE foodbar (
  user_id     INT NOT NULL
, created_at  date not null
, weight      double not null
, PRIMARY KEY (user_id, created_at)
);
SELECT curr.user_id, curr.weight - prev.weight
FROM foodbar curr, foodbar prev
WHERE curr.user_id = prev.user_id
  AND curr.created_at = CURRENT_DATE
  AND prev.created_at = CURRENT_DATE - INTERVAL '7 days'
;

аритметичният синтаксис на датата вероятно е грешен, но разбирате идеята

вижте по-горе, добавете ORDER BY curr.weight - prev.weight DESC и LIMIT N

за последните два въпроса:не спекулирайте, разгледайте плановете за изпълнение. (postgresql има EXPLAIN ANALYZE , не знам за mysql) вероятно ще откриете, че трябва да индексирате колони, които участват в WHERE и JOIN , а не тези, които формират набора от резултати.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Избор на правилния път в изявление за изискване

  2. MySQL REPLACE INTO на няколко клавиша?

  3. SQL IN израз - запазвайте дубликати при връщане на резултати

  4. mysql - Оптимизиране на ORDER BY COALESCE върху колона за присъединена таблица

  5. Квалифициране на име на колона на временна таблица в jOOQ