דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. Singlestore

Singlestore

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 184 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • ש מנותק
    ש מנותק
    ש.ב.ח.
    כתב ב נערך לאחרונה על ידי ש.ב.ח.
    #1

    תגובה: SQL שאילתה תקועה... מה כן אפשר?

    בהמשך לדיון לעיל
    נפל לידי קישור לSinglestore
    כמו הרבה דברים, אני חייב למשש אותם...

    הורדתי למחשב עם דוקר העמסתי עליו את הDB*
    וניסיתי את השאילתה שאיתה פתחתי את הדיון לעיל
    לנגד עיני נעשה הפלא... כ 950ms ויש תגובה.
    מה שמעניין שפעם שני של אותה השאילתה חוזר אחרי כ 80ms

    עוד כמה ניסיונות וראיתי שזה שווה משהו...

    שאילתה כמו זאת:

    select
        `records`.`id`,
        price.price as price,
        price.cost as cost,
        incomens.amount as incomens,
        price.price - price.cost as total,
        projects.`count` as projects,
        incomens.max as max_incomens,
        price.price - incomens.amount as balanse
    from
        `records`
        left join (
        	select 
        		CAST(`meta_records`.`value` AS UNSIGNED) as join_id,
        		sum(`data3`.`value`) as price,  
        		sum(`data4`.`value`) as cost
    
        	from 
        		`meta_records`
        		INNER JOIN `meta_records` as `data2` on `data2`.`value` = `meta_records`.`record_id`  		
        		INNER JOIN `meta_records` as `data3` on `data2`.`record_id` = `data3`.`record_id`
        		INNER JOIN `meta_records` as `data4` on `data2`.`record_id` = `data4`.`record_id`
    
    
        	WHERE `meta_records`.`field_id` = 5
        	and `meta_records`.`field_type` = "App\\Models\\Field"
    
        	and `data2`.`field_id` = 7
        	and `data2`.`field_type` = "App\\Models\\Field"
        	
        	and `data3`.`field_id` = 10
        	and `data3`.`field_type` = "App\\Models\\Field"
        	
        	and `data4`.`field_id` = 11
        	and `data4`.`field_type` = "App\\Models\\Field"
        	
        	GROUP BY `meta_records`.`value`
        	
        ) as price on price.join_id = records.id
    
        
        left join (
        	select 
        		CAST(`meta_records`.`value` AS UNSIGNED) as join_id,
        		sum(`data3`.`value`) as amount,
        		max(CAST(`data3`.`value` AS DECIMAL)) AS `max`
        	from 
        		`meta_records`
        		INNER JOIN `meta_records` as `data2` on `data2`.`value` = `meta_records`.`record_id`  		
        		INNER JOIN `meta_records` as `data3` on `data2`.`record_id` = `data3`.`record_id`
    
        	WHERE `meta_records`.`field_id` = 5
        	and `meta_records`.`field_type` = "App\\Models\\Field"
    
        	and `data2`.`field_id` = 12
        	and `data2`.`field_type` = "App\\Models\\Field"
        	
        	and `data3`.`field_id` = 14
        	and `data3`.`field_type` = "App\\Models\\Field"
        	
        	GROUP BY `meta_records`.`value`
        	
        ) as incomens on incomens.join_id = records.id
        
        left join (
        	select 
        		CAST(`meta_records`.`value` AS UNSIGNED) as join_id,
        		count(*) as `count`
    
        	from 
        		`meta_records`
    
        	WHERE `meta_records`.`field_id` = 5
        	and `meta_records`.`field_type` = "App\\Models\\Field"
        	
        	GROUP BY `meta_records`.`value`
        	
        ) as projects on projects.join_id = records.id
        
    WHERE records.collection_id = 2
    order by records.id
    LIMIT 1000
    

    בmysql: כ 600ms
    בsimglestorge: כ 230ms (ובפעם השניה ואילך 120ms)

    מצד אחד אין בו מפתח זר ואימות נתון מלבד הסוג, גם אי אפשר ליצור כמה עמודת בunique אחד, ואולי עוד אי אלו חסרונות.

    אבל מן הצד השני הוא מהיר בהרבה כאמור.
    גם ראיתי שאפשר במשפט WHERE להשתמש בשמות העמודות (אין צורך בhaving)

    מישהו מכיר?
    יש מה להגיד על זה?

    A תגובה 1 תגובה אחרונה
    2
    • A מנותק
      A מנותק
      aaron
      השיב לש.ב.ח. ב נערך לאחרונה על ידי
      #2

      @ש-ב-ח
      הייתי בודק גם את https://www.cockroachlabs.com/ על הדרך.
      מנוע מבוסס postgres, וקוד פתוח..

      aaron.tchumim@gmail.com
      Hetzner - שרתים וירטואליים ופיזיים במחירים מעולים (קישור שותפים)

      ווצאפ API - תיעוד שירות API לא רשמי.

      ש תגובה 1 תגובה אחרונה
      0
      • ש מנותק
        ש מנותק
        ש.ב.ח.
        השיב לaaron ב נערך לאחרונה על ידי ש.ב.ח.
        #3

        @aaron ניסיתי.
        זה לא מתחיל להיות הsinglestorge
        ראשית הביצוע כמעט שווה לmysql
        שנית המעבר כואב הרבה יותר... (סוגי נתונים לא ניתנים להשוואה, ועוד כל מיני זבובים מעצבנים)

        תגובה 1 תגובה אחרונה
        0

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום