Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Implementasi tag tren berbasis mysql json

Saya tidak melihat alasan yang bagus, mengapa Anda menggunakan JSON di sini. Juga tidak jelas, mengapa Anda percaya bahwa "skema nosql " dalam MySQL akan melakukan sesuatu yang lebih baik.

Yang mungkin Anda butuhkan adalah sesuatu seperti ini:

CREATE TABLE TAG_COUNTER (
    account       varchar(36) NOT NULL,
    time_id       INT NOT NULL,
    tag_name      varchar(50) NOT NULL,
    counter       INT UNSIGNED NOT NULL,
    PRIMARY KEY   (account, time_id, tag_name)
);

Ini akan menyederhanakan pertanyaan Anda. Pernyataan INSERT akan terlihat seperti:

INSERT INTO TAG_COUNTER
  (account, time_id, tag_name, counter)
VALUES
  ('google', 2018061023, 'tag1', 1),
  ('google', 2018061023, 'tag2', 1)
ON DUPLICATE KEY UPDATE counter = counter + VALUES(counter);

Pernyataan SELECT mungkin seperti ini

SELECT
    SUBSTRING(time_id, 1, 6) AS month,
    tag_name,
    SUM(counter) AS counter_agg
FROM TAG_COUNTER
GROUP BY month, tag_name
ORDER BY month, counter_agg DESC;

Perhatikan bahwa saya tidak mencoba mengoptimalkan tabel/skema untuk ukuran dan kinerja data. Itu akan menjadi pertanyaan yang berbeda. Tetapi Anda harus melihat, bahwa pertanyaannya sekarang jauh lebih sederhana.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. perbarui dua tabel sekaligus

  2. Pilih kueri menggunakan IN() dan tanpa penyortiran apa pun

  3. Panduan Merancang Database Untuk Keranjang Belanja Online Di MySQL

  4. Apa kata sandi root default untuk MySQL 5.7?

  5. GALAT 1054 (42S22):Kolom '‍‍' tidak diketahui di 'daftar bidang'