Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

Mysql json आधारित ट्रेंडिंग टैग कार्यान्वयन

मुझे कोई अच्छा कारण नहीं दिख रहा है, आप यहां JSON का उपयोग क्यों करते हैं। यह भी स्पष्ट नहीं है कि आप ऐसा क्यों मानते हैं कि "nosql स्कीमा " MySQL के भीतर कुछ भी बेहतर करेगा।

आपको शायद कुछ इस तरह की आवश्यकता है:

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

यह आपके प्रश्नों को सरल करेगा। INSERT स्टेटमेंट इस तरह दिखेगा:

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

सेलेक्ट स्टेटमेंट कुछ इस तरह हो सकता है

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;

ध्यान दें कि मैंने डेटा आकार और प्रदर्शन के लिए तालिका/स्कीमा को अनुकूलित करने का प्रयास नहीं किया। यह एक अलग सवाल होगा। लेकिन आपको यह देखना होगा कि प्रश्न अब बहुत आसान हो गए हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL क्विक टिप:DAYOFWEEK फंक्शन का उपयोग करना

  2. क्या डेटाबेस में यूजरनेम और पासवर्ड स्टोर करना सुरक्षित है?

  3. MySQL GROUP BY... भिन्न मान समान फ़ील्ड होने के कारण

  4. मैसकल:उस कॉलम से कैसे पूछताछ करें जिसका प्रकार बिट है?

  5. MySql.Data.MySqlClient का उपयोग करना; काम नहीं कर रहा