Masalahnya ialah dengan kedai dalam talian hipotesis; Saya akan memudahkan data untuk masalah khusus saya.
Andaikan terdapat dua jadual: satu mengandungi tarikh pendaftaran setiap pelanggan
CREATE TABLE customers ( customerID int, register DATE, );
, yang kedua menyimpan semua lawatan dalam talian pelanggan
CREATE TABLE visits ( customerID int, visit DATE, );
Untuk setiap pengguna, saya ingin mencari hari terakhir pengguna melawat kedai dalam talian dalam masa 7 hari selepas pendaftaran, dengan cara yang paling berkesan. Jika pengguna tidak mengunjungi kedai sejak pendaftaran, saya harus mengembalikan NULL sebagai tarikh lawatan terakhir dalam tempoh 7 hari selepas pendaftaran.
Sudah tentu saya boleh TINGGAL SERTAI pelanggan mengakses dengan ID pelanggan dan menapis tarikh akses hingga antara hari pendaftaran dan tambah tujuh, dan akhirnya dapatkan maksimum untuk setiap tarikh Walau bagaimanapun, gabungan awal menghasilkan jadual yang besar dan saya ingin mengelakkan operasi pengiraan yang mahal ini. Terima kasih banyak atas pemikiran anda!
Ini mungkin yang paling berkesan:
Indeks:
Kebimbangan anda tentang "operasi yang mahal secara pengiraan":
访问
yang saya cadangkan ialah "overlay", jadi ia hanya melihat pada indeks.