Bagaimanakah Saya Boleh Membahagikan Jadual dengan Lajur Datetime dengan Cekap dalam MySQL?

Barbara Streisand
Lepaskan: 2024-10-24 17:36:02
asal
900 orang telah melayarinya

How Can I Efficiently Partition a Table by a Datetime Column in MySQL?

Cara Membahagikan Jadual mengikut Lajur Masa Tarikh Dengan Cekap

Membahagikan jadual mengikut lajur tarikh ialah teknik yang digunakan untuk meningkatkan prestasi pertanyaan. Walau bagaimanapun, adalah penting untuk memahami pengehadan dan memilih kaedah pembahagian yang sesuai.

Apabila membahagikan menggunakan cincang, seperti dalam contoh anda, tidak mungkin menggunakan pemangkasan pembahagian untuk lajur tarikh. Dalam kes sedemikian, anda boleh membuat lajur INTEGER tambahan yang menyimpan hasil TO_DAYS(DATE()) dan kemudian membahagikan mengikut lajur tersebut. Ini membolehkan pembahagian dan perolehan data yang cekap.

Pendekatan lain ialah menggunakan pembahagian RANGE. Dengan membahagikan jadual ke dalam julat tarikh yang ditentukan, anda boleh memastikan bahawa julat tarikh tertentu terletak dalam sekatan tertentu. Pendekatan ini menyediakan pemangkasan dan prestasi yang lebih baik untuk pertanyaan berasaskan tarikh.

Sebagai contoh, anda boleh mencipta jadual pembahagian RANGE berikut:

<code class="sql">CREATE TABLE raw_log_2011_4 (
  id bigint(20) NOT NULL AUTO_INCREMENT,
  logid char(16) NOT NULL,
  tid char(16) NOT NULL,
  reporterip char(46) DEFAULT NULL,
  ftime datetime DEFAULT NULL,
  KEY id (id)
) ENGINE=InnoDB AUTO_INCREMENT=286802795 DEFAULT CHARSET=utf8
  PARTITION BY RANGE( TO_DAYS(ftime) ) (
    PARTITION p20110401 VALUES LESS THAN (TO_DAYS('2011-04-02')),
    PARTITION p20110402 VALUES LESS THAN (TO_DAYS('2011-04-03')),
    ...
    PARTITION future VALUES LESS THAN MAXVALUE
  );</code>
Salin selepas log masuk

Dengan jadual pembahagian RANGE ini, pertanyaan berikut akan mendapatkan semula data dengan cekap untuk tarikh yang ditentukan:

<code class="sql">SELECT * FROM raw_log_2011_4 WHERE ftime = '2011-04-03';</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membahagikan Jadual dengan Lajur Datetime dengan Cekap dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!