MariaDB
 sql >> Teknologi Basis Data >  >> RDS >> MariaDB

Bagaimana UNCOMPRESSED_LENGTH() Bekerja di MariaDB

Di MariaDB, UNCOMPRESSED_LENGTH() adalah fungsi bawaan yang mengembalikan panjang string terkompresi sebelum dikompresi dengan COMPRESS() fungsi.

Sintaks

Sintaksnya seperti ini:

UNCOMPRESSED_LENGTH(compressed_string)

Dimana compressed_string adalah string terkompresi.

Contoh

Berikut ini contoh dasarnya:

SELECT UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50)));

Hasil:

+------------------------------------------------+
| UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) |
+------------------------------------------------+
|                                             50 |
+------------------------------------------------+

Di sini, saya menggunakan REPEAT() berfungsi untuk mengulang huruf yang sama sebanyak 50 kali. Mengulangi karakter membuatnya menjadi kandidat yang baik untuk kompresi.

Dibandingkan dengan String Terkompresi

Ini dia lagi, dibandingkan dengan string terkompresi:

SELECT
    LENGTH(COMPRESS(REPEAT('z', 50))) AS "Compressed",
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('z', 50))) AS "Uncompressed";

Hasil:

+------------+--------------+
| Compressed | Uncompressed |
+------------+--------------+
|         16 |           50 |
+------------+--------------+

Panjang Byte vs Panjang Karakter

UNCOMPRESSED_LENGTH() melaporkan panjangnya dalam byte (bukan hanya panjang karakter).

Kita dapat mengujinya dengan menggunakan karakter multi-byte, seperti simbol hak cipta (© ), lalu meneruskannya ke fungsi seperti LENGTH() untuk mendapatkan panjang dalam byte, dan CHAR_LENGTH() untuk mendapatkan panjang karakter:

SELECT 
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('©', 50))) AS "UNCOMPRESSED_LENGTH()",
    LENGTH(REPEAT('©', 50)) AS "Uncompressed (Bytes)",
    LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Bytes)",
    CHAR_LENGTH(REPEAT('©', 50)) AS "Uncompressed (Char)",
    CHAR_LENGTH(COMPRESS(REPEAT('©', 50))) AS "Compressed (Char)";

Hasil (menggunakan keluaran vertikal):

UNCOMPRESSED_LENGTH(): 100
 Uncompressed (Bytes): 100
   Compressed (Bytes): 17
  Uncompressed (Char): 50
    Compressed (Char): 17

Berikut contoh lain yang menggunakan karakter Thailand:

SELECT 
    UNCOMPRESSED_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "UNCOMPRESSED_LENGTH()",
    LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Bytes)",
    LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Bytes)",
    CHAR_LENGTH(REPEAT('อ', 50)) AS "Uncompressed (Char)",
    CHAR_LENGTH(COMPRESS(REPEAT('อ', 50))) AS "Compressed (Char)";

Hasil (menggunakan keluaran vertikal):

UNCOMPRESSED_LENGTH(): 150
 Uncompressed (Bytes): 150
   Compressed (Bytes): 18
  Uncompressed (Char): 50
    Compressed (Char): 18

Karakter Thai ini menggunakan 3 byte, dan oleh karena itu kita mendapatkan 150 byte untuk string yang tidak dikompresi, meskipun panjang string hanya 50 karakter.

Argumen Null

Melewati null mengembalikan null :

SELECT UNCOMPRESSED_LENGTH(null);

Hasil:

+---------------------------+
| UNCOMPRESSED_LENGTH(null) |
+---------------------------+
|                      NULL |
+---------------------------+

Argumen Tidak Ada

Memanggil UNCOMPRESSED_LENGTH() dengan jumlah argumen yang salah, atau tanpa memberikan argumen apa pun menghasilkan kesalahan:

SELECT UNCOMPRESSED_LENGTH();

Hasil:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'UNCOMPRESSED_LENGTH'

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Magicbricks Bermigrasi ke MariaDB untuk Mendukung Lalu Lintas Volume Tingginya

  2. MariaDB JSON_MERGE_PRESERVE() Dijelaskan

  3. MariaDB USER() Dijelaskan

  4. Berurusan dengan MySQL Long Running Query

  5. Bagaimana TIMEDIFF() Bekerja di MariaDB