Rumah pangkalan data tutorial mysql SQLServer2005 评估和管理索引

SQLServer2005 评估和管理索引

Jun 07, 2016 pm 04:20 PM
mengurus indeks nilaikan

SQLServer2005动态管理视图(DMVs)返回会话、事务、请求的服务器状态信息。它可用于诊断、内存和过程调优、监控(SQLServer2000不支持)。SQLServer引擎跟踪详细的资源使用情况,用select语句从DMVs中可查到,但是这些信息不会长期驻留在磁盘上。 由于索引提供

   SQLServer2005动态管理视图(DMVs)返回会话、事务、请求的服务器状态信息。它可用于诊断、内存和过程调优、监控(SQLServer2000不支持)。SQLServer引擎跟踪详细的资源使用情况,用select语句从DMVs中可查到,但是这些信息不会长期驻留在磁盘上。

  由于索引提供了代替表扫描的一个选择,,且DMVs返回索引使用计数,所以可以比较索引的成本和其性能。这个比较包括保持索引最新的成本,与使用索引而不是表扫描读数据的性能之比。谨记一个更新或删除操作先要读数据从而定位数据,然后对定位的数据进行写操作。一个插入操作在所有的索引上只是写操作。因此,一个大量的插入将使写操作次数超过读操作次数。一个大量的更改操作(包括更新和删除),读和写的次数通常很接近(假定没有'记录找不到'的情况发生)。一个大量的读操作,读的次数将超过写。引用约束如外键还要求额外的读操作(对于插入、更新、删除而言)去确保引用完整性得到维护

  哪些表和索引是没用或者很少用的?

  ---1. 未使用的表和索引。表都有一个索引ID,如果是0则为堆表,1则为聚集索引

  Declare @dbid int

  Select @dbid = db_id('Northwind')

  Select objectname=object_name(i.object_id)

  , indexname=i.name

  , i.index_id

  from sys.indexes i, sys.objects o

  where objectproperty(o.object_id,'IsUserTable') = 1

  and i.index_id NOT IN (select s.index_id

  fromsys.dm_db_index_usage_stats s

  where s.object_id=i.object_idand

  i.index_id=s.index_id and

  database_id = @dbid )

  and o.object_id = i.object_id

  order by objectname,i.index_id,indexname asc

  --2.缺失的索引

  SELECT TOP 50

  [Total Cost] = ROUND(avg_total_user_cost * avg_user_impact * (user_seeks + user_scans),0)

  , avg_user_impact

  , TableName = statement

  , [EqualityUsage] = equality_columns

  , [InequalityUsage] = inequality_columns

  , [Include Cloumns] = included_columns

  ,user_seeks , user_scans

  FROM sys.dm_db_missing_index_groups g

  INNER JOIN sys.dm_db_missing_index_group_stats s

  ON s.group_handle = g.index_group_handle

  INNER JOIN sys.dm_db_missing_index_details d ON d.index_handle = g.index_handle

  WHERE statement LIKE '%tablename%'

  ORDER BY [Total Cost] DESC;

  --3.使用很少的索引和频繁使用的索引一样,都会记录在sys.dm_db_index_usage_stats中。为了找出这些索引,需要查看 诸如user_seeks、 user_scans、user_lookups和user_updates的列。

  ;WITH IXC AS(

  SELECT IXC.object_id,

  IXC.index_id,

  IXC.index_column_id,

  IXC.is_descending_key,

  IXC.is_included_column,

  column_name = C.name

  FROM sys.index_columns IXC

  INNER JOIN sys.columns C ON IXC.object_id = C.object_id AND IXC.column_id = C.column_id

  )

  SELECT TOP 50

  o.name AS 表名

  , i.name AS 索引名

  , i.index_id AS 索引id

  , dm_ius.user_seeks AS 搜索次数

  , dm_ius.user_scans AS 扫描次数

  , dm_ius.user_lookups AS 查找次数

  , dm_ius.user_updates AS 更新次数

  , p.TableRows as 表行数

  ,index_columns = Stuff(IXC_COL.index_columns,1,2,N'')

  ,index_columns_include = Stuff(IXC_COL_INCLUDE.index_columns_include,1,2,N'')

  ,'DROP INDEX ' + QUOTENAME(s.name) + '.' + QUOTENAME(OBJECT_NAME(i.OBJECT_ID))

  + '.' + QUOTENAME(i.name) AS '删除语句'

  FROM sys.dm_db_index_usage_stats dm_ius

  INNER JOIN sys.indexes i ON i.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = i.OBJECT_ID

  INNER JOIN sys.objects o ON dm_ius.OBJECT_ID = o.OBJECT_ID

  INNER JOIN sys.schemas s ON o.schema_id = s.schema_id

  INNER JOIN (SELECT SUM(p.rows) TableRows, p.index_id, p.OBJECT_ID

  FROM sys.partitions p GROUP BY p.index_id, p.OBJECT_ID) p

  ON p.index_id = dm_ius.index_id AND dm_ius.OBJECT_ID = p.OBJECT_ID

  CROSS APPLY(

  SELECT index_columns = (

  SELECT N', ' + quotename(column_name) + CASE is_descending_key

  WHEN 1 THEN N' DESC '

  ELSE N''

  END

  FROM IXC

  WHERE object_id = I.object_id

  AND index_id = I.index_id

  AND is_included_column = 0

  ORDER BY index_column_id

  FOR xml path(''),root('r'),TYPE

  )。value('/r[1]','nvarchar(max)')

  ) IXC_COL

  OUTER APPLY(

  SELECT index_columns_include = (

  SELECT N', ' + quotename(column_name)

  FROM IXC

  WHERE object_id = I.object_id

  AND index_id = I.index_id

  AND is_included_column = 1

  ORDER BY index_column_id

  FOR xml path(''),root('r'),TYPE

  )。value('/r[1]','nvarchar(max)')

  ) IXC_COL_INCLUDE

  WHERE OBJECTPROPERTY(dm_ius.OBJECT_ID,'IsUserTable') = 1

  AND dm_ius.database_id = DB_ID()

  --AND i.type_desc = 'nonclustered'

  --AND i.is_primary_key = 0

  --AND i.is_unique_constraint = 0

  and o.name='tablename' --根据实际修改表名

  ORDER BY (dm_ius.user_seeks + dm_ius.user_scans + dm_ius.user_lookups) ASC

  结论:user_updates很大,而发现user_seeks和user_scans很少或者就是0,那就说明该索引一直在更新,

  但是从来不被使用,仅仅创建和修改,没有为查询提供任何帮助,就可以考虑删除了

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)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu 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)

Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Nov 07, 2023 pm 12:07 PM

Cara menggunakan Redis untuk melaksanakan pengurusan transaksi teragih Pengenalan: Dengan perkembangan pesat Internet, penggunaan sistem teragih menjadi semakin meluas. Dalam sistem teragih, pengurusan urus niaga merupakan cabaran penting. Kaedah pengurusan transaksi tradisional sukar dilaksanakan dalam sistem teragih dan tidak cekap. Menggunakan ciri-ciri Redis, kami boleh melaksanakan pengurusan transaksi teragih dengan mudah dan meningkatkan prestasi dan kebolehpercayaan sistem. 1. Pengenalan kepada Redis Redis ialah sistem storan data berasaskan memori dengan prestasi baca dan tulis yang cekap serta data kaya.

Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Nov 04, 2023 pm 12:00 PM

Bagaimana untuk melaksanakan fungsi pengurusan prestasi pelajar di Jawa? Dalam sistem pendidikan moden, pengurusan prestasi pelajar merupakan satu tugas yang sangat penting. Dengan mengurus prestasi pelajar, sekolah boleh memantau kemajuan pelajar dengan lebih baik, memahami kelemahan dan kekuatan mereka, dan membuat rancangan pengajaran yang lebih disasarkan berdasarkan maklumat ini. Dalam artikel ini, kita akan membincangkan cara menggunakan bahasa pengaturcaraan Java untuk melaksanakan fungsi pengurusan prestasi pelajar. Pertama, kita perlu menentukan struktur data gred pelajar. Biasanya, gred pelajar boleh diwakili sebagai a

Apakah jenis indeks Oracle? Apakah jenis indeks Oracle? Nov 16, 2023 am 09:59 AM

Jenis indeks Oracle termasuk: 1. Indeks B-Tree; 3. Indeks fungsi; Indeks sambungan peta bit; 10. Indeks komposit. Pengenalan terperinci: 1. Indeks B-Tree ialah struktur data pokok pengimbangan sendiri yang boleh menyokong operasi serentak dengan cekap Dalam pangkalan data Oracle, indeks B-Tree ialah jenis indeks yang paling biasa digunakan. Indeks Graf Bit adalah berdasarkan jenis indeks pada algoritma bitmap dan sebagainya.

Apa yang perlu dilakukan jika pengurusan menu klik kanan tidak boleh dibuka dalam Windows 10 Apa yang perlu dilakukan jika pengurusan menu klik kanan tidak boleh dibuka dalam Windows 10 Jan 04, 2024 pm 07:07 PM

Apabila kami menggunakan sistem win10, apabila kami menggunakan tetikus untuk mengklik kanan desktop atau menu klik kanan, kami mendapati bahawa menu tidak boleh dibuka, dan kami tidak boleh menggunakan komputer seperti biasa Pada masa ini, kami perlu memulihkan sistem untuk menyelesaikan masalah. Pengurusan menu klik kanan Win10 tidak boleh dibuka: 1. Mula-mula buka panel kawalan kami, dan kemudian klik. 2. Kemudian klik di bawah Keselamatan dan Penyelenggaraan. 3. Klik di sebelah kanan untuk memulihkan sistem. 4. Jika ia masih tidak boleh digunakan, periksa sama ada terdapat masalah dengan tetikus itu sendiri. 5. Jika anda pasti tiada masalah dengan tetikus, tekan + dan masukkan. 6. Selepas pelaksanaan selesai, mulakan semula komputer.

Belajar menggunakan pipenv: Cipta dan urus persekitaran maya Belajar menggunakan pipenv: Cipta dan urus persekitaran maya Jan 16, 2024 am 09:34 AM

tutorial pipenv: Cipta dan uruskan persekitaran maya, contoh kod khusus diperlukan Pengenalan: Dengan populariti Python, bilangan pembangunan projek juga semakin meningkat. Untuk menguruskan pakej Python yang digunakan dalam projek dengan berkesan, persekitaran maya telah menjadi alat penting. Dalam artikel ini, kami akan membincangkan cara menggunakan pipenv untuk mencipta dan mengurus persekitaran maya serta menyediakan contoh kod praktikal. Apakah pipenv? pipenv ialah alat pengurusan persekitaran maya yang digunakan secara meluas oleh komuniti Python. Ia menyepadukan p

Pengurus tugas yang tidak boleh digunakan Pengurus tugas yang tidak boleh digunakan Dec 26, 2023 pm 10:02 PM

Ramai rakan menghadapi perisian tertentu yang tersekat apabila menggunakan komputer mereka. Apabila komputer tidak boleh bergerak, anda perlu menghubungi pengurus tugas untuk menamatkan proses, tetapi anda mendapati bahawa pengurus tugas tidak boleh dibuka. Mungkin fail anda telah hilang atau virus telah menyerang adalah penyelesaian khusus Mari kita lihat kaedah di bawah. Penyelesaian kepada masalah yang Pengurus Tugas tidak boleh digunakan Secara umumnya, terdapat beberapa cara untuk membuka Pengurus Tugas: 1. Kombinasi kekunci Ctrl+Shift+Esc 2. Kombinasi kekunci Ctrl+alt+del 3. Klik kanan pada butang. ruang kosong dan pilih " "Start Task Manager" juga boleh membuka "Task Manager" 4. Buka kotak dialog "Run" dan masukkan "taskmgr.exe" untuk membuka Task Manager.

Bagaimana untuk menyelesaikan masalah bahawa indeks melebihi had tatasusunan Bagaimana untuk menyelesaikan masalah bahawa indeks melebihi had tatasusunan Nov 15, 2023 pm 05:22 PM

Penyelesaiannya ialah: 1. Semak sama ada nilai indeks adalah betul: mula-mula sahkan sama ada nilai indeks anda melebihi julat panjang tatasusunan. Indeks tatasusunan bermula dari 0, jadi nilai indeks maksimum hendaklah panjang tatasusunan tolak 1. Semak keadaan sempadan gelung: Jika anda menggunakan indeks untuk akses tatasusunan dalam gelung, pastikan syarat sempadan gelung adalah betul; 3. Mulakan tatasusunan: Sebelum menggunakan tatasusunan, pastikan tatasusunan telah dimulakan dengan betul. dan mengendalikannya dengan sewajarnya.

Bagaimana untuk membahagikan cakera Bagaimana untuk membahagikan cakera Feb 25, 2024 pm 03:33 PM

Bagaimana untuk membahagikan pengurusan cakera Dengan perkembangan teknologi komputer yang berterusan, pengurusan cakera telah menjadi bahagian yang sangat diperlukan dalam penggunaan komputer kita. Sebagai bahagian penting dalam pengurusan cakera, pembahagian cakera boleh membahagikan cakera keras kepada beberapa bahagian, membolehkan kami menyimpan dan mengurus data dengan lebih fleksibel. Jadi, bagaimana untuk membahagikan pengurusan cakera? Di bawah, saya akan memberi anda pengenalan terperinci. Pertama sekali, kita perlu menjelaskan bahawa tidak hanya ada satu cara untuk membahagikan cakera Kita boleh memilih kaedah pembahagian cakera yang sesuai mengikut keperluan dan tujuan yang berbeza. selalunya

See all articles