Rumah >pangkalan data >tutorial mysql >Adakah Pengindeksan Integer Lebih Cepat Daripada Pengindeksan DateTime untuk Set Data Besar?

Adakah Pengindeksan Integer Lebih Cepat Daripada Pengindeksan DateTime untuk Set Data Besar?

Susan Sarandon
Susan Sarandonasal
2024-11-02 11:36:02869semak imbas

 Is Integer Indexing Faster Than DateTime Indexing for Large Datasets?

Perbandingan Indeks MySQL: Integer vs. DateTime

Walaupun perbincangan sebelum ini telah membandingkan jenis medan Cap Masa dan DateTime tanpa pengindeksan, pertanyaan ini memfokuskan secara khusus pada prestasi DateTime dengan indeks melawan int dengan indeks dalam jadual InnoDB dengan berjuta-juta rekod.

Dalam senario ini, pertanyaan dengan kriteria berdasarkan:

  1. DateTime dengan indeks: Gunakan indeks pada lajur DateTime.
  2. int dengan indeks: Gunakan indeks pada perwakilan integer (cap waktu UNIX) bagi nilai DateTime.

Penilaian Empirikal

Ujian awal menggunakan MySQL 5.1.41 dan 10 juta rekod menunjukkan kelebihan kelajuan yang luar biasa untuk int:

Query DateTime with Index (sec) int with Index (sec)
COUNT(*) 120.27 25.02
BETWEEN 8.41 1.56

Penjelasan

Kecekapan int dikaitkan dengan fakta bahawa indeks boleh dibandingkan secara langsung dengan kriteria pertanyaan, menghapuskan keperluan MySQL untuk menghuraikan dan menukar tarikh. Sebaliknya, DateTime memerlukan pemprosesan tambahan untuk mengekstrak dan membandingkan komponen tarikh dan masa.

Pertimbangan Tambahan

Ujian seterusnya dengan kedua-dua jenis medan yang disimpan dalam jadual yang sama menghasilkan yang serupa prestasi, mencadangkan bahawa MySQL boleh mengoptimumkan pertanyaan dengan mengiktiraf kesetaraan DateTime dan nilai int.

Kesimpulan

Berdasarkan keputusan ini, adalah disyorkan untuk menyimpan tarikh dan masa sebagai int (cap waktu UNIX) jika prestasi pertanyaan berasaskan indeks adalah diutamakan. Pengoptimuman ini boleh mengurangkan masa pelaksanaan pertanyaan dengan ketara, terutamanya dalam pangkalan data besar dengan kriteria berasaskan tarikh yang kerap.

Atas ialah kandungan terperinci Adakah Pengindeksan Integer Lebih Cepat Daripada Pengindeksan DateTime untuk Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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