Makale numarası: 198625 - Son Gözden Geçirme: 21 Kasım 2003 Cuma - Gözden geçirme: 3.1

INF: Sayı, tamsayı ve diğerleri karşılaştırmaları en iyi duruma getirme

Sistem İpucuBu makale, kullandığınızdan farklı bir işletim sistemine yöneliktir. Sizinle ilgili olmayabilecek makale içeriği devre dışı bırakıldı.
Hepsini aç | Hepsini kapa

Özet

Tamsayı, ondalık ve sayısal veri türlerine sahip veri türü en iyileştirme bazı çok sıkı kuralları kullanın. Bu makalede, açıklar ve iyileştirici tam bir sayısal veri türü karşılaştırmaları yapmak için kullandığı koşullar ve kısıtlamaları'nı açıklar. Bu makalede kullanılan kavramlar ve terimler açıklığa kavuşturmak amacıyla aşağıdaki bölümü gözden geçirin.

"Duyarlık" bir sayıda basamak sayısıdır. "Ölçek" bir sayı ondalık virgülün sağındaki basamak sayısıdır. Örneğin, 5 duyarlık ve ölçeği 2 123.45 numarası vardır.

Bilgisayarlar tarafından kullanılan sistem numaralandırma ikili dosya olan kısıtlamalar nedeniyle, bazı ondalık kesirler yalnızca tam olarak gösterilemez. Örneğin, ondalık bölümü 0, 1, tam bir ikili gösterimi yok. Bunu yalnızca yaklaşık. Bu türleri yaklaşık olarak düşünülür kayan nokta ve gerçek veri değerleri; bu nedenle ise, sayısal, tamsayıdır ve ondalık veri türlerinin tam bir veri türü olarak kabul edilir.

Koşulları "tam" veya "tam" bilinir, hesaplama tanımında. Sayıları ilgili matematiksel olarak eşdeğer olsa bile, bir numeric(10,1) kesinlikle veya tam olarak bir numeric(10,2) ile karşılaştıracaktır. Matematiksel, 10.1 ve 10.10 değeri olan tam olarak aynı. Ancak, Ölçek fark nedeniyle, hesaplama tam bir eşleşme kabul edilmediği.

Daha fazla bilgi

Iyileştirici'nın karşılaştırma seçenekleri anlamak için <a0></a0>, önce gelen biçimini veri ayrıştırılır ve işlenen anlamalısınız.
  • SQL Server 10 veya daha az basamak pozisyonlar olmadan ondalık değeri aldığında, değer bir tamsayı veri türü olarak nitelenir.
  • SQL Server 11 ya da daha fazla basamak pozisyonlar değeri aldığında, bir tam veri türü olarak (ondalık ya da sayısal) kabul edilir.
  • SQL Server bir ondalık noktasıyla değeri aldığında, bir tam bir veri türü olarak nitelenir.
  • Sayısal ve ondalık (8,0) veya ondalık konum gerektiren küçük değerler, bir tamsayı temsil edilebilir. Bir sayı veya ondalık üzerinde katı bir karşılaştırma her gerçekleştirilir (yani, (8,0) (7,0), (6,0) vb.), tamsayı değeri her zaman daha kesin bir veri türü kabul edilir.
Tam veri türleri, "tam" karşılaştırma gerektirir. Yuvarlama, float veya gerçek veri türü farklı olarak, veri türünü ve ilişkili karşılaştırmalar bütünlüğünü korumak için kabul edilebilir değil.

Plan tamamlamak karar verir, iyileştirici seçim yapar: gelen bağımsız değişkeni, tablo tanımını az veya kesin olan?

Sütun veri daha kesin bir bağımsız değişken değeri ise, sütun verileri bir bağımsız değişken duyarlık ve ölçeği yükseltilmesi gerekir. Bu sütundaki çevrilmesi gerekir ve tablo taramaları içeren çok planlardaki neden olabilir.

Sütun veri daha az hassas bir bağımsız değişken değeri ise, bağımsız değişken için duyarlık ve ölçeği sütunun yükseltilebilir. Bu genellikle, bir dizin veya veri alma efor yaklaşımı daha doğrudan bir plan olur.

Bu kavram açıklığa kavuşturmak amacıyla, aşağıda bazı örnekler verilmiştir.

Örnek 1
create table tblTest( a numeric(8,0) PRIMARY KEY, b int)
select * from tblTest where a = 123
				
Yeniden ayrıştırma için başvuran, 10'dan az basamak 123; ondalık nokta içermeyen kuralları. Bu nedenle:
  • Gelen bağımsız değişken, tamsayı değeri olarak kabul edilir.
  • Sütun tanımıdır (8,0) veya daha az, böylece tamsayı daha kesin bir veri türü kabul edilir. Bu nedenle, dönüştürme veri sütununa uygulanan ve en iyi bir plan küçüktür seçilebilir.
Örnek 2
create table tblTest( a numeric(10,0) PRIMARY KEY, b int)
select * from tblTest where a = 123.
				
  • Gelen bağımsız değişkeni bir ondalık noktası içeren ve bağımsız değişken bir ondalık ya da sayısal (n, 0) tam bir veri türü olarak görülür biçimde WHERE yan tümcesinde hiçbir Ondalık konumlar gösterilir.
  • Bağımsız değişken yükseltilmiş ve tam olarak karşılaştırıldığında sütun tanımı (10,0) olduğundan. Bu genellikle, doğrudan dizin arama kullanan bir sorgu planı olur.
Örnek 3
create table tblTest( a numeric(10,0) PRIMARY KEY, b int)
select * from tblTest where a = 123.0
				
  • Gelen bağımsız değişkeni bir ondalık noktası ve tek bir ondalık konumu içerir. Bu, bir tam bir veri türü (n, 1) olur.

    Not: Bu sorgu, ondalık konumu çok önemlidir. Gönderilen sorgu, matematiksel bir duyarlık ve ölçeği (n, 1) Karşılaştırılacak istediğini belirten DEĞIL (n, 0).
  • Sütun tanımı (10,0) olduğundan, daha kesin bir veri türü bağımsız değişkeni olarak kabul edilir. Bu nedenle, dönüştürme veri sütununa uygulanan ve en iyi bir plan küçüktür seçilebilir.
Tablo tanımını bir tam bir veri türü olan unutmayın. Yuvarlama yapmak, sunucu denedi, bir tam bir veri türü kuralları korumak ve geçersiz bir sonuç işleme neden olacaktır.

Örnek olarak aşağıdaki noktaları dikkate alın:
create table tblTest( a numeric(10,1) PRIMARY KEY, b int)
select * from tblTest where a = 123.15
				
SQL Server gelen bağımsız değişkeni, sütun verileri dönüştürmek için bir plan seçtiyseniz, (n, 2) duyarlık ve ölçek, ancak kullanıcı büyük olasılıkla 123.1 güncelleştirmek isterseniz, sütun duyarlık ve ölçeği bağımsız değişkeni yuvarlamak yerine etmediniz, onu 123.2 tercih. Bu durumda, eşleşme olmalıdır.

10'Dan daha az olan tüm sayısal değerler ölçekleme ve duyarlık 0, tinyint, küçük tamsayı veya tamsayı türü, 1, 2 ve 4 bayt depolama, alma, sırasıyla depolanabilir. Ile karşılaştırma bile en küçük değerini 5 bayt, duyarlık arttıkça gereken daha fazla depolama sürecektir. Aşağıdaki tabloda, türleri arasındaki eşlemeyi gösterir.

Bu tabloyu kapaBu tabloyu aç
duyarlıkYeni türü
<= 2tinyint
<= 4smallint
<10Int

Dizinler kullanarak daha etkin biçimde kullanılabilir kazançlar ek olarak, uygun olan yerlerde kullanarak bu veri türlerinden biri de önemli ölçüde alanından tasarruf.

SQL Server 7.0, ALTER TABLE ekler Dinamik olarak bir sütunun veri türünü değiştirmek için ALTER COLUMN deyimleri. SQL Server önceki sürümlerinde, bu dönüştürmeyi yalnızca istenen tanımları ile yeni bir tablo oluşturmak ve INSERT yapmak yoluyla yapılabilir Tablo doldurmak için SELECT'i tıklatın. Not Bu değişiklik tüm Tetikleyicileri, depolanmış yordamlar veya sütun için bir sayısal tür bekleniyor değişkenleri kullanabilecek diğer kod güncelleştirmenizi gerektirebilir.

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft SQL Server 6.5 Standard Edition
  • Microsoft SQL Server 7.0 Standard Edition
Anahtar Kelimeler: 
kbmt kbbug kbinfo KB198625 KbMttr
Otomatik TercümeOtomatik Tercüme
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:198625  (http://support.microsoft.com/kb/198625/en-us/ )