Rumah pangkalan data tutorial mysql SQL Server 2008 处理隐式数据类型转换在执行计划中的增强

SQL Server 2008 处理隐式数据类型转换在执行计划中的增强

Jun 15, 2018 am 09:29 AM
sql server

通过如下测试验证,首先建立数据分布不平均的测试表。

USE tempdb
GOCREATE TABLE _t(
    c varchar(50)
);CREATE INDEX IX_c ON _t( c );GO-- 加入 10000 条数据INSERT _tSELECT (9999 + id) FROM(    SELECT TOP 10000 id = ROW_NUMBER() OVER( ORDER BY GETDATE() )    FROM sys.all_columns a, sys.all_columns
)ID
-- 将 100 - 10000 的数据变成相同值UPDATE _t SET c = '' WHERE c >= '10100'
Salin selepas log masuk

然后通过 varhcar和nvarchar值分别测试满足条件1条和满足条件8900条的执行计划预估行数。

ALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = '10005';     -- 实际1条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = N'10005';     -- 实际1条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = '';          -- 实际9900条GOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGOSELECT * FROM _t WHERE c = N'';         -- 实际9900条GOSET SHOWPLAN_ALL OFF;GO
Salin selepas log masuk

得到的查询计划预估行数如下图所示

这里写图片描述

从图中显示的预估数据行数可以看到,对于varchar值(不需要隐匿的数据类型转换),其预估的结果是准确的。但对于nvarchar值,不管指定的值是只有一条数据,还是有8900条数据匹配,其预估的结果都是99.0099,这说明预估并没有考虑我们指定的值。
进一步用变量测试

ALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGODECLARE @v varchar;SELECT * FROM _t WHERE c = @v; -- varcharGOSET SHOWPLAN_ALL OFF;GOALTER INDEX IX_c ON _t REBUILD;GOSET SHOWPLAN_ALL ONGODECLARE @nv nvarchar;SELECT * FROM _t WHERE c = @nv; -- nvarcharGOSET SHOWPLAN_ALL OFF;GO
Salin selepas log masuk

结果如下图所示:
这里写图片描述

不管是varchar,还是nvarchar的变量,预估的行数都是99.0099,这个值与使用nvarchar常量值的结果一样,看来SQL Server查询优化器应该确实把 GetRangeThroughConvert 的结果看成变量了,这个应该是设计上考虑不太周全的地方了,毕竟指定固定常量值的时候,GetRangeThroughConvert的结果应该也是确定值才对。

本文讲解了SQL Server的相关内容,更多相关内容请关注php中文网。

相关推荐:

如何让MySQL中单句实现无限层次父子关系查询

带进度的SQL Server FileStream如何存取

当忘记 SQL Server 管理员密码该如何处理


Atas ialah kandungan terperinci SQL Server 2008 处理隐式数据类型转换在执行计划中的增强. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Apakah perisian pelayan microsoft sql? Apakah perisian pelayan microsoft sql? Feb 28, 2023 pm 03:00 PM

Microsoft SQL Server ialah sistem pengurusan pangkalan data relasi yang dilancarkan oleh Microsoft Ia adalah platform pangkalan data yang komprehensif yang menggunakan alat perisikan perniagaan (BI) bersepadu untuk menyediakan pengurusan data peringkat perusahaan tahap integrasi dengan perisian yang berkaitan Kelebihan tinggi. Enjin pangkalan data SQL Server menyediakan fungsi storan yang lebih selamat dan boleh dipercayai untuk data hubungan dan data berstruktur, membolehkan pengguna membina dan mengurus aplikasi data yang tersedia dan berprestasi tinggi untuk perniagaan.

Pelayan SQL atau MySQL? Penyelidikan baharu mendedahkan pilihan pangkalan data terbaik. Pelayan SQL atau MySQL? Penyelidikan baharu mendedahkan pilihan pangkalan data terbaik. Sep 08, 2023 pm 04:34 PM

SQLServer atau MySQL? Penyelidikan terkini mendedahkan pemilihan pangkalan data terbaik Dalam beberapa tahun kebelakangan ini, dengan perkembangan pesat Internet dan data besar, pemilihan pangkalan data telah menjadi isu penting yang dihadapi oleh perusahaan dan pembangun. Di antara banyak pangkalan data, SQL Server dan MySQL, sebagai dua pangkalan data hubungan yang paling biasa dan digunakan secara meluas, adalah sangat kontroversi. Jadi, antara SQLServer dan MySQL, yang manakah harus anda pilih? Penyelidikan terkini menjelaskan masalah ini untuk kami. Pertama, biarkan

Bagaimana untuk menyambung ke pangkalan data Microsoft SQL Server menggunakan PDO Bagaimana untuk menyambung ke pangkalan data Microsoft SQL Server menggunakan PDO Jul 29, 2023 pm 01:49 PM

Pengenalan kepada cara menggunakan PDO untuk menyambung ke pangkalan data Microsoft SQL Server: PDO (PHPDataObjects) ialah antara muka bersatu untuk mengakses pangkalan data yang disediakan oleh PHP. Ia memberikan banyak kelebihan, seperti melaksanakan lapisan abstraksi pangkalan data dan menjadikannya mudah untuk bertukar antara jenis pangkalan data yang berbeza tanpa mengubah suai sejumlah besar kod. Artikel ini akan memperkenalkan cara menggunakan PDO untuk menyambung ke pangkalan data Microsoft SQL Server dan menyediakan beberapa contoh kod yang berkaitan. langkah

Pembangunan pangkalan data PHP dan SQL Server Pembangunan pangkalan data PHP dan SQL Server Jun 20, 2023 pm 10:38 PM

Dengan populariti Internet, pembangunan laman web dan aplikasi telah menjadi perniagaan utama banyak syarikat dan individu. Pangkalan data PHP dan SQLServer adalah dua alat yang sangat penting. PHP ialah bahasa skrip sebelah pelayan yang boleh digunakan untuk membangunkan laman web dinamik SQLServer ialah sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Microsoft dan mempunyai pelbagai senario aplikasi. Dalam artikel ini, kita akan membincangkan pembangunan PHP dan SQL Server, serta kelebihan, kelemahan dan kaedah aplikasinya. Pertama, mari

Analisis ringkas tentang lima kaedah menyambungkan SQL Server dengan PHP Analisis ringkas tentang lima kaedah menyambungkan SQL Server dengan PHP Mar 21, 2023 pm 04:32 PM

Dalam pembangunan web, gabungan PHP dan MySQL adalah sangat biasa. Walau bagaimanapun, dalam beberapa kes, kita perlu menyambung kepada jenis pangkalan data lain, seperti SQL Server. Dalam artikel ini, kami akan membincangkan lima cara berbeza untuk menyambung ke SQL Server menggunakan PHP.

SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? Sep 10, 2023 pm 01:39 PM

SQL Server vs. MySQL: Pangkalan data manakah yang lebih sesuai untuk seni bina ketersediaan tinggi? Dalam dunia dipacu data hari ini, ketersediaan yang tinggi adalah salah satu keperluan untuk membina sistem yang boleh dipercayai dan stabil. Sebagai komponen teras penyimpanan dan pengurusan data, ketersediaan tinggi pangkalan data adalah penting untuk operasi perniagaan perusahaan. Di antara banyak pangkalan data, SQLServer dan MySQL adalah pilihan biasa. Jadi dari segi seni bina ketersediaan tinggi, pangkalan data manakah yang lebih sesuai? Artikel ini akan membandingkan kedua-duanya dan memberikan beberapa cadangan.

Perbandingan SQL Server vs. MySQL: Mana yang lebih baik untuk pemprosesan data berskala besar? Perbandingan SQL Server vs. MySQL: Mana yang lebih baik untuk pemprosesan data berskala besar? Sep 09, 2023 am 09:36 AM

SQLServer dan MySQL kini merupakan dua sistem pengurusan pangkalan data hubungan (RDBMS) yang sangat popular. Kedua-duanya adalah alat yang berkuasa untuk menyimpan dan mengurus data berskala besar. Walau bagaimanapun, mereka mempunyai beberapa perbezaan dalam mengendalikan data berskala besar. Artikel ini akan membandingkan SQL Server dan MySQL, memfokuskan pada kesesuaian mereka untuk pemprosesan data berskala besar. Mula-mula, mari kita fahami ciri-ciri asas SQLServer dan MySQL. SQLServer dibangunkan oleh Microsoft

SQL Server dan MySQL bersaing, bagaimana untuk memilih penyelesaian pangkalan data yang terbaik? SQL Server dan MySQL bersaing, bagaimana untuk memilih penyelesaian pangkalan data yang terbaik? Sep 10, 2023 am 08:07 AM

Dengan pembangunan Internet yang berterusan, pemilihan pangkalan data menjadi semakin penting. Di antara banyak pangkalan data, SQLServer dan MySQL adalah dua pilihan berprofil tinggi. SQLServer ialah sistem pengurusan pangkalan data hubungan yang dibangunkan oleh Microsoft, manakala MySQL ialah sistem pengurusan pangkalan data hubungan sumber terbuka. Jadi bagaimana untuk memilih penyelesaian pangkalan data terbaik antara SQLServer dan MySQL? Pertama, kita boleh membandingkan kedua-dua pangkalan data ini dari segi prestasi. SQLServer sedang diproses

See all articles