Itu benar-benar tidak penting di mana kolom secara fisik sejak select
akan memungkinkan Anda untuk menentukan urutan (secara logis) pengambilannya.
Dan, jika Anda menggunakan select *
yang tidak memungkinkan Anda menentukan pesanan, Anda mungkin tidak seharusnya demikian. Ada beberapa situasi berharga di mana Anda harus melakukan itu (alat analisis DB, misalnya), sebagian besar waktu lebih baik untuk memilih kolom individual yang Anda inginkan, bahkan jika Anda menginginkan semuanya. Ini memungkinkan Anda untuk menangkap perubahan skema dengan cepat sehingga Anda dapat menyesuaikan program Anda dengannya.
Bagaimanapun, SQL sendiri tidak memberikan jaminan tentang urutan kolom yang dikembalikan kecuali Anda secara eksplisit daftar mereka. select *
dapat memberikannya kepada Anda dalam urutan ordinal hari ini dan urutan abjad besok. Bahkan jika implementasi tertentu memungkinkan Anda melakukannya (dengan membuat tabel baru dengan kolom di tempat yang "benar" dan menyalin data, atau menyediakan ekstensi SQL seperti alter table T insert column C1 before C2
), saya akan menyarankan untuk tidak melakukannya. Itu tidak akan portabel untuk implementasi lain dan saya lebih suka membuat kode saya se-portabel mungkin.
Selain itu, di luar apa yang dapat Anda tentukan dalam SQL, DBMS harus dapat sepenuhnya mengontrol bagaimana itu menyimpan data. Mungkin kunci utama Anda adalah gabungan dari kolom ketujuh dan empat puluh detik dan mungkin lebih efisien untuk menempatkannya di depan catatan fisik.