Microsoft SQL Server 2000 ve Microsoft SQL Server 2005'te "harmanlama" nasıl dizeleri göre sıralanmış ve hangi karakter belirtir küme Unicode olmayan veriler için kullanılır. SQL Server 2000 alfabe düzenlerinden iki tür destekler:
- SQL harmanlamaları
- Windows harmanlamaları
Her harmanlama türü ve nasıl kullanılacağı, hangi harmanlama karar vermek iyi bir genel bakış, açıklama, SQL Server 2000 Books Online'da "Harmanlamalar seçme" konusuna bakın veya SQL Server 2005 Books Online'da "Harmanlama türleri" konusuna bakın.
Bu makalede, SQL Server 2000 veya SQL Server 2005'i yüklediğinizde, bir Windows Harmanlaması'nı veya bir SQL Harmanlaması seçmenizi konusunda kararınızı etkileyebilir ek dikkat edilecek noktalar ele alınmaktadır.
Karşılaştırma semantiği
Unicode veri olarak aynı algoritmayı kullanarak bir Windows harmanlaması, Unicode olmayan veri karşılaştırmasını uygulanır. Unicode ve Unicode sıralama dize karşılaştırma kurallarda belirli bir Windows sürümü ile uyumlu. SQL Server'daki veri türleri arasında tutarlılık sağlar. Ayrıca, SQL Server'ı kullanan aynı kuralları kullanarak başvurularına dizeleri sıralanacak CompareString
Win32 API işlevini kullanan geliştiricilerin sağlar.
Bir SQL Harmanlaması'de SQL Server Unicode olmayan veriler için farklı bir karşılaştırma semantiği tanımlar. SQL Server bu karşılaştırma semantiği bir SQL "sort order" dayandırır. Bir eşleme sıralama siparişlerinin SQL harmanlamaları, SQL Server Books Online'da "SQL Harmanlaması adı" konusuna bakın.
Unicode verileri sıralamak için BIR SQL Harmanlaması'nın işletim sistemi Microsoft Windows tarafından sağlanan tüm sıralama yordamına uyumsuz kurallardır; ancak, Unicode verileri sıralama belirli bir kurallar sıralama Windows sürümü ile uyumlu değildir. Bir SQL Harmanlaması'nı kullandığınızda karşılaştırma kurallar Unicode ve Unicode veri için farklı olduğundan, alttaki veri türüne bağlı olarak aynı karakter karşılaştırmalar için farklı sonuçlar görebilirsiniz. SQL kullanıyorsanız, örneğin, harmanlama "A-c' Unicode dizesi" SQL_Latin1_General_CP1_CI_AS"dizesi 'ab' değerinden çünkü kısa çizgi ("-")"önce b"gelen ayrı bir karakter olarak sıralanır. Ancak, bu dizeler Unicode'a dönüştürür ve aynı karşılaştırma yapmak, Unicode dizesi N'a c ' N'ab büyük olarak kabul edilir' olduğundan, Unicode sıralama kurallarını "kısa çizgiyi yoksayar, bir sözcük sıralama" kullanın.
Dize karşılaştırma performansı
Unicode sıralama kurallarına Unicode SQL sıralama düzeni kurallarına göre çok daha karmaşıktır. SQL Server Unicode verilerini karşılaştırdığında, karakterleri harmanlama'nın yerel ayarını göre dinamik olarak değiştirilmiş bir ağırlık atanır. Veri genişliği, vurgu veya Kana duyarlılığı stil ayarlarını da ile karşılaştırma değiştirilir. Kullanılan <a0>Unicode</a0> sıralama yordamlarının sözcük sıralama gibi daha akıllı sıralama davranışlar'ı destekler.
Ayrıca, kullanılan yordamlarının Unicode veri işlemesi için sıralama ve birkaç bin farklı karakter, çoğu SQL Server sıralama düzenleri işleyebileceği en fazla 255 karakter yerine karşılaştırmasını esnek etkilenir. Bu nedenle, kuralları sıralama Unicode kullanır ham dize karşılaştırma çalışma Unicode SQL sıralama düzeni kullanan bir benzer dize karşılaştırma saat ve CPU döngüsü açısından genellikle daha pahalıdır.
Bunun için veri türleri ve SQL Server alfabe düzeni türlerinde olası birleşimlerini anlamı:
- Dize karşılaştırmaları, depolamak ve Unicode veri türlerini (char, varchar, metin) kullanarak, veri işleme ve bir SQL Harmanlaması'nı kullanıyorsanız, bir Unicode SQL sıralama gerçekleştirilmez.
- Dize karşılaştırmaları, depolamak ve Unicode veri türlerini (char, varchar, metin) kullanarak, veri işleme ve bir Windows Harmanlaması'nı kullanıyorsanız, Unicode sıralama kurallarına gerçekleştirilmez. Bu dize, performans, daha uzun sürer ve bir SQL ile gerçekleştirilen işlemine benzer, daha fazla CPU'ı kullanmak için sıralama genellikle bağlı belirli işlemler de neden alfabe düzeni.
- Unicode veri türlerini (nchar, nvarchar, ntext) kullanıyorsanız, sıralama davranış SQL ve Windows harmanlamaları arasında fark yoktur. Her ikisi de kuralları sıralama Unicode kullanır.
Genellikle, derecesine performans Windows ve SQL harmanlamaları arasında önemli olur. Fark yalnızca yerine bir iş yükünü CPU bağımlı olduğu g/Ç veya ağ hızını ve çoğu bu CPU yükü, kısıtlı dize işleme veya SQL Server'da gerçekleştirilen karşılaştırmaları yükü nedeniyle görüntülenir. Örnek bir uygulamanın, performansı fark telafuz, burada bir uygulama, bir SQL Server saklı yordamına uzun bir dize değeri geçirmeden bir sistemdir. Saklı yordamın sonra Transact-SQL dizesini düzenleme işlevlerini CHARINDEX veya PATINDEX gibi kapsamlı aracılığıyla dizesini ayrıştırır. Iş yükünü oldukça tek boyutlu ve bu dizenin, saklı yordam ayrıştırma yürütmeler tarafından dominated, bir SQL Harmanlaması'nı ve bir Windows Harmanlaması'arasındaki farkı performansı fark olabilir. Ancak, çoğu uygulama tasarımı performans farkın önemli olduğu bir durum için neden değil.
Öneriler
Not
- SQL harmanlamaları, SQL Server'ın önceki sürümleriyle uyumluluk için sağlanır. Windows harmanlamaları, SQL Server'da, ayrıca <a0>Windows</a0> işletim sisteminde, dize karşılaştırmaları tutarlı olan Unicode metin ve hem Unicode için tutarlı bir dize karşılaştırmaları sağlar. Geriye dönük uyumluluk sorunları veya bir SQL gerektiren belirli performans sorunları olmadığı sürece tüm bu nedenle, Windows harmanlamaları tercih edilir alfabe düzeni.
- Çoğu uygulama performansını önemli ölçüde alfabe düzeni değişikliği yararlanabilmenizi değil, yalnızca performans özellikleri bir SQL Harmanlaması üzerinde temel bir SQL Harmanlaması düşünüyorsanız, fark ettiniz. Bir düzeyinden bir SQL Harmanlaması'nı gösteren bir sorgu yalıtıncaya emin olun. Etkilenen sorguları tanımlamak hemen sonra bir değişiklik alfabe düzeni için bir aşağıdaki seçenekleri göz önünde bulundurun. Bu seçenekleri her ikisi de, bir SQL Harmanlaması için örnek harmanlamayı değiştirme, göreceklerini daha büyük bir performans kazanç sağlayabilirsiniz:
- Için Windows harmanlamaları yükü, açık bir dize işleme veya ayrıştırma gerçekleştirmek için Transact-SQL yordamları izlenen ve Unicode veri türlerini kullanıyorsanız, bir SQL Harmanlaması'nı veya sık sık çalıştırılır ve en pahalı olan işlem için ikili bir Windows Harmanlaması'nı belirlemek isteyebilirsiniz. Tablo içinde bir metin sütununu "x" karakter içerip içermediğini belirlemek için PATINDEX işlevi kullandığınızı varsayalım. Bu belirli bir karşılaştırma işlemi için bir SQL Harmanlaması'nı zorlamak ve Windows kullanmaya devam etmek için diğer veritabanı ve uygulama alfabe düzeni, sistemin tamamı için harmanlama değiştirmek gerekmez:
SELECT PATINDEX ('%x%', MemoFld COLLATE SQL_Latin1_General_Cp1_CI_AS) FROM ...
- Yükü için Windows harmanlamaları karmaşık dize düzenleme işlevlerini kullanan daha s?radan sorgularını izlenmesini, sorgu tasarımı olanlar dwarf iyileştirmeleri sağlayabilir ya da Gelişmiş dizin için bir SQL Harmanlaması'nı değiştirme görür. Yerine getirilmesi BIR sorgu tarafından oldukça Seçici üzerinde arar uygun dizinleri dize karşılaştırma maliyet küçük değişiklikler için önemli olur. Buna ek olarak, dize karşılaştırma başına yükü az miktarda hızlı bir şekilde, bir tablo taraması gerçekleştirin ve her satır milyonlarca belirli bir değeri karşılaştırmak gereken bir sorguda ekleyebilirsiniz. Büyük bir tablo engellemek veya dizin, dizin veya sorgunun kendisini değiştirerek sorgu planından tarar, sorgunuz için bir SQL Harmanlaması'nı değiştirirseniz, yaptığınız daha çok hızlı gerçekleştirecektir.
Yok, bir SQL'ın bir türevidir harmanlama üçüncü bir tür harmanlama. Bu üçüncü harmanlama, "uyumluluk harmanlama" ya da bir "obsolescent harmanlama." olarak bilinir. Bir uyumluluk harmanlama, önceden tanımlanmış bir harmanlama adı SQL Server 2000'de bulunmayan sıralama ve karşılaştırma kurallar kümesidir. Örneğin, büyük/küçük harf duyarlılığı tutarsız bir ayar Unicode ve Unicode olmayan veriler için SQL Server 7.0 ayarlarsanız, SQL Server 7. 0'ın bu örneğinin SQL Server 2000'e yükselttiğinizde bir uyumluluk harmanlama gerekir. SQL harmanlamaları ile ilgili bilgileri, bu makalenin tartışmada uyumluluk alfabe düzenlerinden için de geçerlidir.
Uyumluluk alfabe düzenleri hakkında daha fazla bilgi için Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
270042
(http://support.microsoft.com/kb/270042/
)
: INF SQL Server uyumluluk alfabe düzenlerinden açıklaması
Makale numarası: 322112 - Last Review: 13 Aralık 2005 Salı - Gözden geçirme: 8.1
Bu makaledeki bilginin uygulandığı durum:
- Microsoft SQL Server 2000 Standard Edition
- Microsoft SQL Server 2005 Developer Edition
- Microsoft SQL 2005 Server Enterprise
- Microsoft SQL Server 2005 Express Edition
- Microsoft SQL Server 2005 Standard Edition
- Microsoft SQL 2005 Server Workgroup
|kbmt kbhowto kbinfo KB322112 KbMttr|Machine-translated Article
Ö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:322112
(http://support.microsoft.com/kb/322112/en-us/
)