Mengoptimumkan Pendapatan Data: Tidak Termasuk Medan TEXT/BLOB
Banyak sistem pangkalan data tidak mempunyai kaedah langsung untuk memilih semua lajur dengan cekap kecuali medan TEKS atau BLOB yang ditetapkan dalam satu pertanyaan. Ini menimbulkan cabaran apabila menganalisis set data yang besar atau memfokuskan pada titik data tertentu.
Penyelesaian praktikal melibatkan SQL dinamik. Teknik ini membina pertanyaan yang mengenepikan lajur yang tidak diingini dengan mengulangi lajur jadual dan membina pernyataan SELECT secara dinamik.
Berikut ialah contoh yang menggambarkan pendekatan SQL dinamik ini:
<code class="language-sql">DECLARE @sql VARCHAR(8000), @table_id INT, @col_id INT; SET @sql = 'SELECT '; SELECT @table_id = id FROM sysobjects WHERE name = 'MY_Table'; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND name <> 'description'; WHILE (@col_id IS NOT NULL) BEGIN SELECT @sql = @sql + name FROM syscolumns WHERE id = @table_id AND colid = @col_id; SELECT @col_id = MIN(colid) FROM syscolumns WHERE id = @table_id AND colid > @col_id AND name <> 'description'; IF (@col_id IS NOT NULL) SET @sql = @sql + ','; PRINT @sql; END; SET @sql = @sql + ' FROM MY_table'; EXEC @sql;</code>
Pertanyaan ini secara berkesan mendapatkan semula semua lajur kecuali medan 'huraian' yang ditentukan. Mengecualikan lajur besar seperti TEXT/BLOB dengan ketara meningkatkan prestasi pertanyaan.
Walaupun SELECT *
menawarkan kesederhanaan, adalah penting untuk menggunakannya dengan bijak, kerana ia boleh memberi kesan kepada prestasi dengan banyak lajur. Kaedah SQL dinamik ini menyediakan alternatif yang lebih cekap untuk pemeriksaan data yang disasarkan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Dapatkan Semua Lajur Dengan Cekap Kecuali Medan TEKS/BLOB Tertentu dalam Pertanyaan Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!