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

MySQL अस्थायी तालिका सम्मिलित करें

कोड-मॉन्क ने जो लिखा है, उस पर काम करते हुए, निम्नलिखित पर विचार करें:

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    drop temporary table if exists temp; -- could be some other random structure residue

    create temporary table temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter

संग्रहीत प्रक्रिया का परीक्षण करें

call uspK(); -- test it, no warnings on edge conditions

क्या नहीं करें

कोई नहीं होगा निम्नलिखित के साथ बहुत भाग्य खोजें। अगर आपको ऐसा लगता है, तो इसे कुछ बार चलाएं;

drop procedure if exists uspK;
DELIMITER $$
create procedure uspK ()
BEGIN
    -- drop temporary table if exists temp;

    create temporary table if not exists temp
    SELECT aID, bID
    FROM tags
    WHERE placeID = "abc" AND tagID = "def";

    -- use the temp table somehow
    -- ...
    -- ...
    -- ...

    -- drop temporary table temp; -- otherwise it survives the stored proc call
END
$$ -- signify end of block
DELIMITER ; -- reset to default delimiter

क्योंकि create temporary table if not exists temp परतदार है

सामान्य टिप्पणियाँ

DELIMITERS के सरल विषय पर कुछ हद तक धाराप्रवाह होने तक किसी को संग्रहित प्रोक्स लिखने में नहीं आना चाहिए। उनके बारे में यहां एक खंड में लिखा है सीमांकक . कहा जाता है . इस तरह की एक साधारण चीज़ पर अनावश्यक बर्बाद समय से आपको दूर करने की उम्मीद में, डिबगिंग का बहुत समय बर्बाद कर सकता है।

साथ ही, यहां आपके प्रश्न के साथ-साथ उस संदर्भ में, ध्यान रखें कि तालिकाओं का निर्माण DDL है जो कर सकते हैं समग्र रूपरेखा (प्रदर्शन) का एक बड़ा प्रतिशत है। यह पूर्व-मौजूदा तालिका का उपयोग करके एक खरीद बनाम धीमा कर देता है। कोई सोच सकता है कि कॉल तात्कालिक है, लेकिन ऐसा नहीं है। जैसे, प्रदर्शन के लिए, पहले से मौजूद तालिका का उपयोग करके परिणामों को अपनी खंडित पंक्ति में डाल दिया जाता है Id स्थायी DDL ओवरहेड की तुलना में बहुत तेज़ है।



  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 ब्लॉब सामग्री भेजें

  2. PHP फ़ंक्शन में SQL क्वेरी डालना

  3. सर्वर को पुनरारंभ किए बिना .env चर को पुनः लोड करना (लारवेल 5, साझा होस्टिंग)

  4. SQL LIKE क्वेरी विफल - तैयार कथन में घातक त्रुटि

  5. mysql में पिवट टेबल