Daha fazladan sorgu veya veritabanı ekstra sütunu nedir?

4 Cevap php

Çok az zaman var olacak veriler için daha fazla sorgu veya veritabanı ekstra sütunu nedir.

Örnek: Alt kullanıcı yönetimi Durumunda i ana kullanıcıları tabloda ekstra bir sütun super_user_id ekleyebilir ve kullanıcıların türleri sub_user ve varsayılan sütun değer -1 olup iseniz enrty yapmak veya ben yeni bir tablo oluşturun ve bu tablodaki alt kullanıcıyı yönetmek ya.

Ama giriş durumunda i iki tabloda aramak zorunda ve bu ben bir daha sorgu yapmak zorunda.

Teşekkürler

4 Cevap

Genel bir cevap yoktur; Daha spesifik olmak gerekir. Ben sağlayabilir tüm genel ilkeler vardır.

Her şey eşit olmak, bir takım nedenlerden için, gereksiz bilgi olmadan iyi normalize veritabanı ile daha iyi olacak. Ama gereksiz bilgiler programı çok zaman tasarrufu olabilecek durumlar vardır. Bir örnek Markdown ile biçimlendirilmiş metin: düzenleme için izin vermek için özgün biçimlendirme saklamak gerekir, ancak kaynak size çıktı gerekir her zaman biçimlendirme derece sistemi üzerinde yıpratıcı olabilir. Bu nedenle, biçimlendirilmiş çıktı depolamak için yedek bir sütun eklemek ve bu sütun up-to-güncel tutulmasını sağlamak için ek sorumluluk olabilir.

Ben durum hakkında bildiğimiz tüm öne ekstra sütun sorgu tasarruf edeceğini olmasıdır. Bunun tek doğru cevabı size bir sorgu tasarrufu performans yararı bunu telafi edeceğini biliyorum sürece muhtemelen temiz ve minimal masanızı tutmak gerektiğidir. Prematüre optimizasyonu tüm kötülüklerin köküdür, Hatırla - uygulama zaten yeterince hızlı daha fazla çalışır bulabilirsiniz. Ekstra sorgu önemli bir darboğaz olduğunu profilleme iken bulursanız, o zaman sütun eklemeyi düşünebilirsiniz.

Yine, senin durumun daha bilgi olmadan, belirli bir veya beton öneri sunmak için imkansız, ama ben en azından bir karara varmak için yardımcı olduk umuyoruz.

Eğer hesaplanmış bir değeri depolamak karşı sizin sorguda değerinin hesaplanması demek?

Bu güncellenecektir ne sıklıkta bağlıdır, veri olacak kadar büyük, gerektiğinde ne sıklıkta. Hiçbir teorik iyi cevap olabilir, test ve profil gerekir.

Ikinci tablo kullanın. Bu not iki sorgu sorunu gerektirir. Bunun yerine, birlikte iki tablo birleştirme, tek bir sorgu vermek ya da daha iyisi, sizin için JOIN gelmez bir görünüm yaratacaktır:

SELECT usertable.col1, usertable.col2 superusertable.superuserid
    FROM usertable LEFT OUTER JOIN superusertable 
    ON usertable.userid = superusertable.userid

Bu doğru normalize yapısını sürdürmek için izin verir, helps sizi (bir SUPER_USER kim sergiyi gibi) bazı sorgularda ve veritabanı arama sorunları optimize etmek için izin verir.

Ek bir sorgu yapmak her zaman daha fazla zaman alacaktır.

Satır binlerce olmalıdır bile DB fazladan bir sütun ekleyerek, herhangi önemli bir etkisi olmayacaktır.

Ergo, ekstra sütun eklemek ve DB Alt tasarruf :)