sql >> Database teknologi >  >> RDS >> Mysql

tabeldesign + SQL spørgsmål

Jeg kan ikke se, hvorfor du skal bruge den syntetiske nøgle, så jeg bruger denne tabel i stedet:

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'
;

den aritmetiske datosyntaks er sandsynligvis forkert, men du forstår den

se ovenfor, tilføj ORDER BY curr.weight - prev.weight DESC og LIMIT N

for de sidste to spørgsmål:undlad at spekulere, undersøg udførelsesplaner. (postgresql har EXPLAIN ANALYZE , ved ikke om mysql) vil du sandsynligvis finde ud af, at du skal indeksere kolonner, der deltager i WHERE og JOIN , ikke dem, der udgør resultatsættet.



  1. Java MySQL JDBC-hukommelseslækage

  2. Snow Leopard + Ruby 1.9.1 + MySQL Gem =Kæmpe problemer

  3. Liste over fremmednøgler og de tabeller, de refererer til i Oracle DB

  4. Sådan installeres wordpress på MS SQL