Jedwali za Muda za MySQL: Jinsi Zinavyofanya Kazi, Manufaa, na Mazoezi Bora

目次

1. Utangulizi

When working with MySQL, a “temporary table” is a useful way to store and process data temporarily. By using temporary tables, you can temporarily hold data to reduce the load of complex queries and improve the efficiency of batch processing.

In this article, we will explain what MySQL temporary tables are, along with their use cases and benefits in detail.

Jedwali la Muda ni Nini?

A temporary table is a table that is valid only within a session.
Unlike regular tables, it is not stored permanently in the database, and it is automatically dropped when the session ends.

The key characteristics of temporary tables are as follows:

  • They exist per session (not accessible from other connections)
  • They are automatically dropped when the session ends
  • They can be used without interfering even if a regular table with the same name exists
  • They are often used to improve performance

Temporary tables are well-suited for data analysis and temporary data processing, and they are commonly used as support for batch processing and aggregation tasks.

Faida za Kutumia Majedwali ya Muda

Using temporary tables can make data processing more efficient. Here are three major benefits.

1. Boresha utendaji wa maswali

When handling large amounts of data, using multiple JOINs and subqueries can make processing complex and increase database load. With temporary tables, you can filter and store data in advance, speeding up query execution.

2. Inafaa kwa uhifadhi wa data ya muda

In batch processing or data transformation, you may need to store data temporarily and perform necessary operations. Temporary tables let you store data temporarily and enable fast in-memory processing.

3. Hifadhi data iliyopo salama

Directly manipulating production data is risky. By using temporary tables, you can process data without changing production data and reduce the risk of errors.

Muhtasari

MySQL temporary tables are a convenient tool for temporary data storage and processing.

  • They are session-scoped and dropped when the session ends
  • They are useful for performance improvements and batch processing
  • They allow safe operations without changing production data

2. Misingi ya Jedwali la Muda

MySQL temporary tables are used to store data temporarily, unlike regular tables. In this section, we will explain the basic concepts of temporary tables in detail, including “differences from regular tables” and “differences from internal temporary tables.”

Tofauti Kati ya Majedwali ya Muda na Majedwali ya Kawaida

Temporary tables and regular tables differ significantly in data retention and access behavior. The table below summarizes the main differences.

ItemTemporary TableRegular Table
LifetimeDropped when the session endsExists until explicitly dropped
AccessAvailable only within the session (not visible to other connections)Shareable across all sessions
ConflictsCan be used even if a regular table with the same name existsCannot create another table with the same name
Storage locationMEMORY (default) or an InnoDB temporary areaStored in the database storage
PersistenceNone (dropped when the session ends)Yes (retained by the database)

Vidokezo Muhimu

  • Temporary tables are isolated per session and are not visible to other users.
  • You can create them without error even if a regular table with the same name exists .
  • They are created explicitly using CREATE TEMPORARY TABLE and are automatically dropped when the session ends .

Tofauti Kati ya Majedwali ya Muda na Majedwali ya Muda ya Ndani

In addition to user-created temporary tables, MySQL also creates internal temporary tables automatically. They may sound similar, but their purposes and management differ.

ItemTemporary TableInternal Temporary Table
Creation methodExplicitly created using CREATE TEMPORARY TABLEAutomatically created by MySQL
PurposeCreated by the user for specific processingCreated by MySQL to process complex queries (GROUP BY, ORDER BY)
ScopeAvailable only within the sessionValid only while the query is executing
DeletionDropped when the session endsAutomatically dropped after the query completes

Jedwali la muda la ndani ni nini?

  • MySQL may internally create temporary tables to optimize certain queries (such as GROUP BY , ORDER BY , DISTINCT ).
  • End users cannot manage them directly (you cannot explicitly create them like CREATE TEMPORARY TABLE ).
  • They are created as needed during query execution and are automatically dropped when the query completes .

Mfano ambao unaweza kusababisha majedwali ya muda ya ndani

When you run a query like the following, MySQL may create an internal temporary table to process it.

SELECT category, COUNT(*) 
FROM products 
GROUP BY category
ORDER BY COUNT(*) DESC;

Katika hali hii, MySQL inaweza kuunda meza ya muda ya ndani ili kuhifadhi matokeo ya GROUP BY kwa muda,
na kisha kutumia ili kuhesabu matokeo ya mwisho.

Muhtasari

  • Meza ya muda ni meza ya muda iliyoundwa na mtumiaji ambayo inaangushwa kiotomatiki wakati kikao kinapoisha.
  • Tofauti na meza za kawaida, haiwezi kufikiwa kutoka vikao vingine .
  • Meza ya muda ya ndani inaundwa na kuangushwa kiotomatiki na MySQL , na watumiaji hawawezi kuidhibiti moja kwa moja.

3. Jinsi ya Kuunda Meza za Muda

Unaweza kuunda meza ya muda ya MySQL kwa kutumia taarifa ya CREATE TEMPORARY TABLE. Katika sehemu hii, tunaeleza kila kitu kutoka kuunda msingi hadi kuunda moja kulingana na meza iliyopo.

Njia ya msingi ya kuunda meza ya muda

Katika MySQL, unatumia CREATE TEMPORARY TABLE kuunda meza ya muda.

Sintaksisi ya msingi

CREATE TEMPORARY TABLE table_name (
    column_name data_type constraints,
    column_name data_type constraints,
    ...
);

Mfano wa code

SQL ifuatayo inaunda meza ya muda inayoitwa users_temp yenye nguzo tatu: id (nambari), name (neno), na email (neno).

CREATE TEMPORARY TABLE users_temp (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100)
);

Kwa sababu meza hii inaangushwa kiotomatiki wakati kikao kinapoisha, haiai athari kwenye hifadhi ya kudumu ya data.

Kuunda meza ya muda kulingana na meza iliyopo

Badala ya kuunda meza ya muda kutoka mwanzo, unaweza pia nakili muundo wa meza iliyopo kuunda moja.

Kutumia CREATE TEMPORARY TABLE ... SELECT

Katika MySQL, unaweza kuunda meza ya muda kulingana na matokeo ya taarifa ya SELECT.

Sintaksisi ya msingi

CREATE TEMPORARY TABLE temp_table_name
SELECT * FROM existing_table_name;

Mfano wa code

Kwa mfano, ili nakili muundo wa data wa meza ya users na kuunda meza ya muda mpya users_temp, unaweza kuandika:

CREATE TEMPORARY TABLE users_temp
SELECT * FROM users;

Kwa njia hii, muundo wa nguzo wa users unaendelea hadi users_temp, lakini vifungashio kama PRIMARY KEY na INDEX hazinakiliwi.

Ikiwa unataka nakili muundo wa meza tu bila kujumuisha data, ongeza WHERE 1=0.

CREATE TEMPORARY TABLE users_temp
SELECT * FROM users WHERE 1=0;

Kwa SQL hii, ufafanuzi wa nguzo za users zimenakiliwa, lakini hakuna data inayojumuishwa.

Maelezo wakati wa kuunda meza za muda

1. Meza za muda zina wigo wa kikao

  • Meza ya muda ni halali tu ndani ya kikao ambacho iliumbwa.
  • Haiwezi kufikiwa kutoka uhusiano mwingine au na watumiaji wengine.

2. Unaweza kuiunda hata kama meza ya kawaida yenye jina sawa ipo

  • Kwa mfano, hata kama kuna meza ya kawaida inayoitwa users katika hifadhi ya data, unaweza kuunda meza ya muda inayoitwa users .
  • Katika kikao hicho, meza ya muda inachukua kipaumbele na meza ya kawaida inafichwa.

3. Athari ya injini ya uhifadhi

  • Kwa chaguo-msingi, meza za muda hutumia injini ya MEMORY, lakini ikiwa ukubwa wa data ni mkubwa, zinaweza kuhifadhiwa katika eneo la muda la InnoDB.
  • Ikiwa unataka kutaja wazi injini ya MEMORY, andika hivyo: CREATE TEMPORARY TABLE users_temp ( id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) ) ENGINE=MEMORY;
  • Injini ya MEMORY ni ya haraka lakini ina mipaka ya ukubwa wa data. Kwa data kubwa, zingatia kutumia InnoDB .

Muhtasari

  • Unda meza za muda kwa kutumia CREATE TEMPORARY TABLE .
  • Unaweza pia kuunda moja kwa kunakili meza iliyopo ( SELECT * FROM ).
  • Injini ya MEMORY inaweza kuwa ya haraka, lakini InnoDB mara nyingi ni bora kwa data kubwa.
  • Meza za muda zinaungwa mkono kwa kila kikao na zinaangushwa kiotomatiki wakati kikao kinapoisha .

4. Jinsi ya Kutumia Meza za Muda

MySQL temporary tables can be operated like regular tables, including INSERT, UPDATE, DELETE, and SELECT. Katika sehemu hii, tunaeleza kila operesheni kwa undani.

Kuweka data

Ili kuongeza data kwenye meza ya muda, tumia taarifa ya kawaida INSERT INTO.

Sintaksisi ya msingi

INSERT INTO temp_table_name (column1, column2, ...)
VALUES (value1, value2, ...);

Mfano wa code

SQL ifuatayo inaweka data kwenye meza ya muda inayoitwa users_temp.

INSERT INTO users_temp (id, name, email)
VALUES (1, 'Taro Yamada', 'taro@example.com');

Unaweza pia kunakili na kuweka data kutoka meza iliyopo.

INSERT INTO users_temp (id, name, email)
SELECT id, name, email FROM users WHERE age >= 18;

SQL hii inaweka data kwa watumiaji wenye umri wa miaka 18 au zaidi kutoka meza ya users kwenye meza ya muda.

Kusasisha data

Ili kubadilisha data kwenye meza ya muda, tumia taarifa ya kawaida UPDATE.

Sintaksisi ya msingi

UPDATE temp_table_name
SET column_name = new_value
WHERE condition;

Mfano wa code

Kwa mfano, ili kubadilisha jina la mtumiaji mwenye id=1 kwenye meza ya users_temp:

UPDATE users_temp
SET name = 'Ichiro Sato'
WHERE id = 1;

Kufuta data

Ili kufuta data isiyo ya lazima, tumia taarifa ya DELETE.

Sintaksisi ya msingi

DELETE FROM temp_table_name WHERE condition;

Mfano wa code

Kwa mfano, ili kufuta safu yenye id=1 kutoka users_temp:

DELETE FROM users_temp WHERE id = 1;

Ili kufuta data yote kwenye meza, acha kifungu cha WHERE.

DELETE FROM users_temp;

Kumbuka kuwa kutumia DELETE hakuna kushusha meza yenyewe; inafuta data tu.

Kuchagua data

Ili kupata data iliyohifadhiwa kwenye meza ya muda, tumia taarifa ya SELECT.

Sintaksisi ya msingi

SELECT column_name FROM temp_table_name WHERE condition;

Mfano wa code

Kwa mfano, ili kupata data yote kutoka users_temp:

SELECT * FROM users_temp;

Ili kupata data inayolingana na hali maalum, tumia kifungu cha WHERE.

SELECT * FROM users_temp WHERE email LIKE '%@example.com';

SQL hii inapata safu pekee ambapo anwani ya barua pepe ina @example.com.

Maelezo wakati wa kutumia meza za muda

1. Data inaondolewa wakati wa mwisho wa kipindi

  • Meza za muda zinaungwa mkono kwa kipindi kila moja , na data yao pia inaondolewa wakati wa mwisho wa kipindi .
  • Kwa uchakataji wa muda mrefu, inapendekezwa kuhifadhi data mara kwa mara .

2. Kuunda meza ya muda yenye jina sawa husababisha hitilafu

  • Ikiwa utajaribu kuunda meza ya muda yenye jina sawa kwa kutumia CREATE TEMPORARY TABLE , hitilafu hutokea .
  • Kama njia ya kuepuka hitilafu , endesha DROP TEMPORARY TABLE IF EXISTS kabla. DROP TEMPORARY TABLE IF EXISTS users_temp; CREATE TEMPORARY TABLE users_temp (...);

3. Vikwazo vya injini ya uhifadhi

  • Meza za muda zina injini ya chaguo-msingi MEMORY , lakini data kubwa inaweza kuhifadhiwa kiotomatiki katika eneo la muda la InnoDB.
  • Kwa data kubwa, kutumia meza ya muda ya InnoDB inapendekezwa .

Muhtasari

  • Meza za muda zinaweza kufanya INSERT, UPDATE, DELETE, na SELECT kama meza za kawaida.
  • Wakati wa mwisho wa kipindi, data kwenye meza ya muda pia inaondolewa kiotomatiki .
  • Kuendesha DROP TEMPORARY TABLE IF EXISTS kabla husaidia kuepuka makosa ya migogoro ya majina.
  • Kwa data kubwa, kutumia meza ya muda ya InnoDB inapendekezwa .

5. Kudhibiti na Kushusha Meza za Muda

Meza za muda za MySQL zinashushwa kiotomatiki wakati wa mwisho wa kipindi. Hata hivyo, katika baadhi ya hali unaweza kuhitaji kuzishusha wazi. Katika sehemu hii, tunaeleza jinsi ya kudhibiti na kushusha meza za muda.

Jinsi ya kushusha meza ya muda

Ili kushusha meza ya muda wazi, tumia taarifa ya DROP TEMPORARY TABLE.

Sintaksisi ya msingi

DROP TEMPORARY TABLE table_name;

Mfano wa code

For example, to drop a temporary table named users_temp, run:

DROP TEMPORARY TABLE users_temp;

After running this SQL, the users_temp table is removed and can no longer be used in the session.

Automatic drop when the session ends

A temporary table is automatically dropped when the session ends.

How automatic drop works

  1. Create a temporary table with CREATE TEMPORARY TABLE
  2. Operate on its data while the session is active
  3. When the session (connection) is closed, the temporary table is automatically dropped

However, be careful in the following cases:

  • When sessions remain open for a long time → Unnecessary temporary tables may consume memory, so it is recommended to run DROP TEMPORARY TABLE as needed.
  • When handling large amounts of data → To avoid storage pressure, it is important to drop tables appropriately.

Using DROP TEMPORARY TABLE IF EXISTS

To avoid errors when dropping a table that may not exist, you can use IF EXISTS.

Basic syntax

DROP TEMPORARY TABLE IF EXISTS table_name;

Sample code

DROP TEMPORARY TABLE IF EXISTS users_temp;

This SQL drops users_temp if it exists; if it does not exist, it will not raise an error.

Common errors and fixes

Error 1: “Table not found”

When it happens:

  • When you try to drop a table that does not exist using DROP TEMPORARY TABLE
  • Because temporary tables are session-scoped, you cannot drop them from a different session

Fix:

  • Add IF EXISTS to avoid the error
    DROP TEMPORARY TABLE IF EXISTS users_temp;
    
  • Drop it within the correct session

Error 2: “Table already exists”

When it happens:

  • When you try to create a temporary table with a name that already exists

Fix:

  • Run DROP TEMPORARY TABLE IF EXISTS beforehand
    DROP TEMPORARY TABLE IF EXISTS users_temp;
    CREATE TEMPORARY TABLE users_temp (
        id INT PRIMARY KEY,
        name VARCHAR(50),
        email VARCHAR(100)
    );
    

Best practices for managing temporary tables

  1. Drop them explicitly when you no longer need them
  • Run DROP TEMPORARY TABLE as needed to free unnecessary tables.
  1. Use IF EXISTS to avoid errors
  • DROP TEMPORARY TABLE IF EXISTS prevents errors when dropping a table that does not exist.
  1. Be mindful of session management
  • Long-lived sessions can cause temporary tables to consume memory, so drop them as appropriate.
  1. Understand storage engine impact
  • The MEMORY engine is fast but has data size limits.
  • If you use InnoDB , you need to consider disk space usage.

Summary

  • You can explicitly drop temporary tables using DROP TEMPORARY TABLE .
  • They are automatically dropped when the session ends, but for long-lived sessions, manual cleanup is recommended.
  • DROP TEMPORARY TABLE IF EXISTS helps prevent errors when dropping.
  • It is useful to know how to handle “Table not found” and “Table already exists” errors.

6. Practical Use Cases for Temporary Tables

MySQL temporary tables are used to make temporary data storage and processing more efficient. In this section, we introduce common scenarios where temporary tables are useful and explain implementation details.

1. Using as an intermediate table for aggregation

In data analysis and report generation, processing large datasets directly can slow down query execution. By using a temporary table, you can organize data first and then process it, improving performance.

Scenario

  • The sales table contains one year of sales data.
  • You want to calculate monthly total sales and perform further analysis.

Example implementation

CREATE TEMPORARY TABLE monthly_sales (
    month_year DATE,
    total_sales DECIMAL(10,2)
);

INSERT INTO monthly_sales (month_year, total_sales)
SELECT DATE_FORMAT(sale_date, '%Y-%m-01') AS month_year, SUM(amount) 
FROM sales
GROUP BY month_year;

SELECT * FROM monthly_sales;

2. Keeping temporary data for batch processing

Temporary tables are also useful for batch processing (bulk operations). For example, you can filter data by certain conditions and store only the target data in a temporary table to operate efficiently.

Scenario

  • From the users table, you want to email only users who have logged in within the last year .
  • You store the target data in a temporary table first, then process it sequentially.

Example implementation

CREATE TEMPORARY TABLE active_users (
    id INT PRIMARY KEY,
    name VARCHAR(100),
    email VARCHAR(255)
);

INSERT INTO active_users
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;

SELECT * FROM active_users;

3. Simplifying complex queries

Running complex queries directly can reduce performance and hurt readability. By using temporary tables, you can reduce subqueries and keep SQL simpler.

Scenario

  • You want to get the top 10 best-selling products from the orders table.
  • You want to avoid using subqueries by leveraging a temporary table.

Example implementation

CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;

SELECT * FROM top_products;

4. Temporary operations without needing rollback

Temporary tables are managed per session and are not affected by transactions. This makes them suitable for managing temporary data where rollback is not desired.

Scenario

  • During a transaction, you want to keep temporary calculation results .
  • But you want to avoid temporary data being rolled back on errors.

Example implementation

START TRANSACTION;

CREATE TEMPORARY TABLE temp_results (
    user_id INT,
    score INT
);

INSERT INTO temp_results
SELECT user_id, SUM(points) FROM game_scores GROUP BY user_id;

-- Thibitisha muamala
COMMIT;

SELECT * FROM temp_results;

Summary

  • Temporary tables can be used for aggregation, batch processing, and simplifying queries across many scenarios.
  • Using them as an intermediate table can improve performance and help organize data.
  • For batch processing , pre-extracting only target data helps avoid unnecessary work.
  • For simplifying complex queries , reducing subqueries improves readability.
  • Because they are not affected by transactions , they can be used for temporary data where rollback is not needed.

7. Alternatives and Limitations of Temporary Tables

MySQL temporary tables are useful, but they have some limitations. In some cases, using alternatives such as views or subqueries can provide more efficient data processing. In this section, we explain the main limitations of temporary tables and alternative approaches to work around them.

Main limitations of temporary tables

Temporary tables have several limitations that regular tables do not. Understanding these helps you choose appropriate use cases.

1. Session-scoped

  • A temporary table is valid only within the session where it was created, and cannot be accessed by other connections or users .
  • Even if a regular table with the same name exists, the temporary table takes precedence within the session (the regular table is not accessible).

2. The schema is not retained

  • Regular tables can be inspected with SHOW CREATE TABLE , but a temporary table disappears when the session ends , so its schema is not retained.

3. Index limitations

  • Ikiwa hutabainisha PRIMARY KEY au INDEX katika CREATE TEMPORARY TABLE, hazijengwi kiotomatiki.
  • Ikiwa unahitaji viashiria kwenye meza ya muda, lazima uziunde kwa mkono.

4. Injini ya uhifadhi ya chaguo-msingi ni MEMORY

  • Kwa injini ya MEMORY, ukubwa mkubwa wa data unaweza kusababisha kubadilishana kwenye diski na kupunguza utendaji.
  • Ikiwa utabainisha InnoDB, inaweza kushughulikia data kubwa zaidi, lakini matumizi ya diski huongezeka.

5. Haathiriwi na shughuli

  • Meza za muda haziacwiwi na ROLLBACK.
  • Kwa hivyo, hazifai kwa uchakataji unaohitaji uthabiti mkali wa shughuli.

Mabadiliko mbadala kwa meza za muda

Ili kuepuka mapungufu haya, unaweza kutumia mitazamo au subqueries badala ya meza za muda kwa uchakataji wa data unaobadilika zaidi.

1. Tumia mtazamo

Mtazamo unaweza kutumiwa sawa na meza za muda kwa marejeleo ya data ya muda. Mtazamo unafanya kama meza ya bandia na haihitaji uhifadhi wa data ya muda, ambayo husaidia kuepuka vikwazo vya uhifadhi.

Unda mtazamo

CREATE VIEW active_users AS
SELECT id, name, email FROM users WHERE last_login >= NOW() - INTERVAL 1 YEAR;

Tumia mtazamo

SELECT * FROM active_users;
Faida za kutumia mtazamo

Haitumii uhifadhi (data inarejelewa moja kwa moja, hakuna haja ya kuhifadhi kwa muda)
Haitegemei kikao (inapatikana kwa watumiaji wengine na miunganisho)
Muundo unaweza kuhifadhiwa (unaweza kukagua ufafanuzi na SHOW CREATE VIEW)

Hasara za kutumia mtazamo

Ngumu kusasisha ( INSERT au UPDATE moja kwa moja kwenye mtazamo imezuiliwa)
Utendaji unaweza kudhoofika kwa seti kubwa za data

2. Tumia subquery

Unaweza pia kutumia subquery kuchakata data ya muda bila kuunda meza ya muda.

Kutumia meza ya muda

CREATE TEMPORARY TABLE top_products AS
SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;

SELECT * FROM top_products;

Kutumia subquery

SELECT product_id, SUM(amount) AS total_sales
FROM orders
GROUP BY product_id
ORDER BY total_sales DESC
LIMIT 10;
Faida za kutumia subquery

Utendaji bora kwa sababu hauundi meza ya muda
Haitumii uhifadhi
Haitegemei kikao na inaweza kutekelezwa wakati wowote

Hasara za kutumia subquery

Uwezo wa kusomwa unaweza kudhoofika kwa masuala magumu
Ngumu kutumia tena data (unaweza kuhitaji kurejelea data ile ile mara kwa mara)

3. Tumia CTE (kifungu cha WITH)

Katika MySQL 8.0 na baadaye, unaweza kutumia CTE (Common Table Expression) kushughulikia data kwa muda bila kuunda meza ya muda.

Mfano wa CTE

WITH top_products AS (
    SELECT product_id, SUM(amount) AS total_sales
    FROM orders
    GROUP BY product_id
    ORDER BY total_sales DESC
    LIMIT 10
)
SELECT * FROM top_products;
Faida za kutumia CTE

Inaboresha uwezo wa kusomwa (marafiki kusoma kuliko subqueries)
Inaweza kuboresha utendaji (uchakataji wa mtindo wa muda bila kuunda meza ya muda)

Hasara za kutumia CTE

Haipatikani katika MySQL 5.x (inaungwa mkono tu katika MySQL 8.0 na baadaye)

Muhtasari

MethodProsCons
Temporary tableGood for session-scoped data processingConsumes storage and disappears when the session ends
ViewNo storage usage, not session-dependentHard to update, possible performance degradation
SubqueryNo storage usage, simpleHard to reuse, reduced readability
CTE (WITH)Better readability, performance optimizationAvailable only in MySQL 8.0+

8. Masuala Yanayoulizwa Mara Kwa Mara

Hapa kuna masuala yanayoulizwa mara kwa mara kuhusu meza za muda za MySQL. Tunatumai hii inasaidia kufafanua jinsi zinavyofanya na mapungufu yao ni nini.

1. Je, meza za muda zinaweza kurejelewa kutoka vikao vingine?

Hapana, haziwezi.
Meza ya muda inapatikana tu ndani ya kikao ambapo iliundwa. Vikao vingine haviwezi kufikia. Hata kama mtumiaji mwingine anaunda meza ya muda yenye jina sawa, kila kikao linaitrea kama meza huru.

2. Ni mamlaka gani yanayohitajika kuunda meza za muda?

Ili kuunda jedwali la muda, unahitaji ruhusa ya CREATE TEMPORARY TABLES kwenye hifadhidata.
Ili kumpa ruhusa mtumiaji, endesha SQL ifuatayo:

GRANT CREATE TEMPORARY TABLES ON database_name.* TO 'user_name'@'host';

Unaweza pia kuangalia ruhusa za sasa kwa kutumia SHOW GRANTS.

SHOW GRANTS FOR 'user_name'@'host';

3. Je, jedwali la muda linaathiri matumizi ya diski?

Ndiyo, yanaweza.
Kwa chaguo-msingi, jedwali la muda la MySQL hutumia injini ya MEMORY, lakini wakati ukubwa wa data unazidi kizingiti fulani, huhifadhiwa katika eneo la muda la InnoDB.

Unapokabiliana na seti kubwa za data, jedwali la muda linaweza kutumia nafasi ya diski. Kwa hiyo, inashauriwa kuondoa (drop) kwa uwazi wakati halijahitajika tena.

DROP TEMPORARY TABLE IF EXISTS table_name;

Kupunguza athari kwenye diski, ikiwa unatarajia kiasi kikubwa cha data, fikiria kuunda jedwali la muda kwa kutumia InnoDB badala ya MEMORY.

CREATE TEMPORARY TABLE table_name (
    column1 data_type,
    column2 data_type
) ENGINE=InnoDB;

4. Ni tofauti gani kati ya jedwali la muda na jedwali la muda la ndani?

ItemTemporary tableInternal temporary table
Creation methodCreated by the user with CREATE TEMPORARY TABLEAutomatically created by MySQL during processing such as GROUP BY
ScopeOnly within the creating sessionOnly during query execution
DeletionExplicitly dropped with DROP TEMPORARY TABLEAutomatically dropped when the query completes

5. Je, jedwali la muda linaweza kushirikiwa kati ya nyuzi?

Hapana, haiwezekani.
Jedwali la muda ni halali tu ndani ya nyuzi (kikao) ambako lilitengenezwa, na haliwezi kufikiwa kutoka nyuzi au michakato mingine.

Kama unahitaji kushiriki data kati ya vikao/nyuzi, lazima uunde jedwali la kawaida badala yake.

CREATE TABLE shared_temp_table (
    id INT PRIMARY KEY,
    data VARCHAR(255)
);

6. Je, jedwali la muda linaweza kupunguza utendaji?

Ndiyo, katika baadhi ya hali.
Haswa, kuwa mwangalifu katika hali zifuatazo:

  • Wakati ukubwa wa data ni mkubwa sana
  • Injini ya MEMORY ina mipaka ya ukubwa; baada ya hapo, data inaweza kubadilishwa (swap) kwenda InnoDB, ambayo inaweza kupunguza utendaji.
  • Suluhisho: Ikiwa unatarajia kupita mipaka ya MEMORY, unda jedwali kwa InnoDB tangu mwanzo.
  • Wakati faharasa (indexes) sahihi hazijawekwa
  • Jedwali lililoundwa kwa CREATE TEMPORARY TABLE ... SELECT halikopi faharasa, hivyo utafutaji unaweza kuwa polepole.
  • Suluhisho: Ongeza faharasa inapohitajika kwa kutumia ALTER TABLE.
    ALTER TABLE temp_table_name ADD INDEX (column_name);
    

7. Ninawezaje kuboresha utendaji wa jedwali la muda?

Kuboresha utendaji wa jedwali la muda, njia zifuatazo ni bora:

Tumia injini ya MEMORY (haraka kwa seti ndogo za data)

CREATE TEMPORARY TABLE table_name (
    id INT PRIMARY KEY,
    name VARCHAR(50)
) ENGINE=MEMORY;

Chagua safu wima zinazohitajika tu (toa safu zisizo za lazima)

CREATE TEMPORARY TABLE users_temp AS
SELECT id, name FROM users;

Ongeza faharasa sahihi (harakisha utafutaji)

ALTER TABLE users_temp ADD INDEX (name);

Iondoe mara tu haitakihitajika tena (hutoa kumbukumbu)

DROP TEMPORARY TABLE IF EXISTS users_temp;

Muhtasari

  • Jedwali la muda haliwezi kurejelewa kutoka vikao au nyuzi nyingine
  • Unahitaji ruhusa ya CREATE TEMPORARY TABLES ili kuviunda
  • Kama data ikikua sana, MySQL inaweza kubadili kutoka MEMORY hadi InnoDB, ambayo inaweza kupunguza utendaji
  • Kuongeza faharasa sahihi kunaweza kuharakisha maswali
  • Kuondoa jedwali la muda kwa DROP TEMPORARY TABLE inashauriwa wakati halijahitajika tena

Hii inamalizia maelezo ya kina kuhusu jedwali la muda la MySQL, kutoka dhana za msingi hadi matumizi, vikwazo, mbadala, na maswali yanayoulizwa mara kwa mara.
Kwa kutumia jedwali la muda ipasavyo, unaweza kuboresha kwa kiasi kikubwa ufanisi wa usindikaji wa data.