From 0841d14ed80231ff17ef1016d29db305367f55b3 Mon Sep 17 00:00:00 2001 From: Apress Date: Sun, 16 Oct 2016 16:45:02 +0100 Subject: [PATCH] First commit --- 9781430237419.jpg | Bin 0 -> 11486 bytes LICENSE.txt | 27 ++ .../Chapter 01 - Listing 1-01.sql | 13 + .../Chapter 01 - Listing 1-02.sql | 14 + .../Chapter 01 - Listing 1-03.sql | 19 + .../Chapter 01 - Listing 1-04.sql | 4 + .../Chapter 01 - Listing 1-05.sql | 10 + ...Performance Indexing - Chapter 01.ssms_suo | Bin 0 -> 12800 bytes .../Performance Indexing - Chapter 01.ssmssln | 16 + ...formance Indexing - Chapter 01.ssmssqlproj | 58 +++ .../Chapter 02 - Listing 2-01.sql | 4 + .../Chapter 02 - Listing 2-02.sql | 16 + .../Chapter 02 - Listing 2-03.sql | 7 + .../Chapter 02 - Listing 2-04.sql | 5 + .../Chapter 02 - Listing 2-05.sql | 13 + .../Chapter 02 - Listing 2-06.sql | 3 + .../Chapter 02 - Listing 2-07.sql | 6 + .../Chapter 02 - Listing 2-08.sql | 13 + .../Chapter 02 - Listing 2-09.sql | 3 + .../Chapter 02 - Listing 2-10.sql | 15 + .../Chapter 02 - Listing 2-11.sql | 3 + .../Chapter 02 - Listing 2-12.sql | 3 + .../Chapter 02 - Listing 2-13.sql | 3 + .../Chapter 02 - Listing 2-14.sql | 4 + .../Chapter 02 - Listing 2-15.sql | 15 + .../Chapter 02 - Listing 2-16.sql | 10 + .../Chapter 02 - Listing 2-17.sql | 16 + .../Chapter 02 - Listing 2-18.sql | 9 + ...Performance Indexing - Chapter 02.ssms_suo | Bin 0 -> 19968 bytes .../Performance Indexing - Chapter 02.ssmssln | 16 + ...formance Indexing - Chapter 02.ssmssqlproj | 136 +++++++ .../Chapter 03 - Listing 3-01.sql | 3 + .../Chapter 03 - Listing 3-02.sql | 3 + .../Chapter 03 - Listing 3-03.sql | 12 + .../Chapter 03 - Listing 3-04.sql | 2 + .../Chapter 03 - Listing 3-05.sql | 15 + .../Chapter 03 - Listing 3-06.sql | 9 + .../Chapter 03 - Listing 3-07.sql | 15 + .../Chapter 03 - Listing 3-08.sql | 8 + .../Chapter 03 - Listing 3-09.sql | 15 + .../Chapter 03 - Listing 3-10.sql | 7 + .../Chapter 03 - Listing 3-11.sql | 13 + .../Chapter 03 - Listing 3-12.sql | 18 + .../Chapter 03 - Listing 3-13.sql | 12 + .../Chapter 03 - Listing 3-14.sql | 6 + .../Chapter 03 - Listing 3-15.sql | 17 + .../Chapter 03 - Listing 3-16.sql | 7 + .../Chapter 03 - Listing 3-17.sql | 37 ++ .../Chapter 03 - Listing 3-18.sql | 9 + .../Chapter 03 - Listing 3-19.sql | 9 + .../Chapter 03 - Listing 3-20.sql | 12 + .../Chapter 03 - Listing 3-21.sql | 9 + .../Chapter 03 - Listing 3-22.sql | 9 + .../Chapter 03 - Listing 3-23.sql | 13 + .../Chapter 03 - Listing 3-24.sql | 13 + .../Chapter 03 - Listing 3-25.sql | 6 + .../Chapter 03 - Listing 3-26.sql | 12 + .../Chapter 03 - Listing 3-27.sql | 10 + .../Chapter 03 - Listing 3-28.sql | 13 + .../Chapter 03 - Listing 3-29.sql | 13 + .../Chapter 03 - Listing 3-30.sql | 5 + .../Chapter 03 - Listing 3-31.sql | 11 + .../Chapter 03 - Listing 3-32.sql | 25 ++ .../Chapter 03 - Listing 3-33.sql | 9 + .../Chapter 03 - Listing 3-34.sql | 6 + .../Chapter 03 - Listing 3-35.sql | 17 + .../Chapter 03 - Listing 3-36.sql | 7 + .../Chapter 03 - Listing 3-37.sql | 17 + .../Chapter 03 - Listing 3-38.sql | 13 + .../Chapter 03 - Listing 3-39.sql | 8 + ...Performance Indexing - Chapter 03.ssms_suo | Bin 0 -> 42496 bytes .../Performance Indexing - Chapter 03.ssmssln | 16 + ...formance Indexing - Chapter 03.ssmssqlproj | 262 ++++++++++++ .../Chapter 04 - Listing 4-01.sql | 17 + .../Chapter 04 - Listing 4-02.sql | 34 ++ .../Chapter 04 - Listing 4-03.sql | 8 + .../Chapter 04 - Listing 4-04.sql | 19 + .../Chapter 04 - Listing 4-05.sql | 9 + .../Chapter 04 - Listing 4-06.sql | 17 + .../Chapter 04 - Listing 4-07.sql | 3 + .../Chapter 04 - Listing 4-08.sql | 5 + .../Chapter 04 - Listing 4-09.sql | 9 + .../Chapter 04 - Listing 4-10.sql | 11 + .../Chapter 04 - Listing 4-11.sql | 6 + .../Chapter 04 - Listing 4-12.sql | 8 + .../Chapter 04 - Listing 4-13.sql | 10 + .../Chapter 04 - Listing 4-14.sql | 11 + .../Chapter 04 - Listing 4-15.sql | 5 + .../Chapter 04 - Listing 4-16.sql | 2 + .../Chapter 04 - Listing 4-17.sql | 6 + .../Chapter 04 - Listing 4-18.sql | 15 + ...Performance Indexing - Chapter 04.ssms_suo | Bin 0 -> 27648 bytes .../Performance Indexing - Chapter 04.ssmssln | 16 + ...formance Indexing - Chapter 04.ssmssqlproj | 136 +++++++ .../Chapter 05 - Listing 5-01.sql | 14 + .../Chapter 05 - Listing 5-02.sql | 3 + .../Chapter 05 - Listing 5-03.sql | 13 + .../Chapter 05 - Listing 5-04.sql | 3 + .../Chapter 05 - Listing 5-05.sql | 29 ++ .../Chapter 05 - Listing 5-06.sql | 20 + .../Chapter 05 - Listing 5-07.sql | 8 + .../Chapter 05 - Listing 5-08.sql | 7 + .../Chapter 05 - Listing 5-09.sql | 3 + .../Chapter 05 - Listing 5-10.sql | 3 + .../Chapter 05 - Listing 5-11.sql | 3 + .../Chapter 05 - Listing 5-12.sql | 12 + .../Chapter 05 - Listing 5-13.sql | 5 + .../Chapter 05 - Listing 5-14.sql | 21 + .../Chapter 05 - Listing 5-15.sql | 5 + ...Performance Indexing - Chapter 05.ssms_suo | Bin 0 -> 26624 bytes .../Performance Indexing - Chapter 05.ssmssln | 16 + ...formance Indexing - Chapter 05.ssmssqlproj | 118 ++++++ .../Chapter 06 - Listing 6-01.sql | 13 + .../Chapter 06 - Listing 6-02.sql | 11 + .../Chapter 06 - Listing 6-03.sql | 4 + .../Chapter 06 - Listing 6-04.sql | 2 + .../Chapter 06 - Listing 6-05.sql | 11 + .../Chapter 06 - Listing 6-06.sql | 13 + .../Chapter 06 - Listing 6-07.sql | 4 + .../Chapter 06 - Listing 6-08.sql | 2 + .../Chapter 06 - Listing 6-09.sql | 4 + .../Chapter 06 - Listing 6-10.sql | 12 + .../Chapter 06 - Listing 6-11.sql | 13 + .../Chapter 06 - Listing 6-12.sql | 3 + .../Chapter 06 - Listing 6-13.sql | 11 + .../Chapter 06 - Listing 6-14.sql | 49 +++ .../Chapter 06 - Listing 6-15.sql | 2 + .../Chapter 06 - Listing 6-16.sql | 11 + .../Chapter 06 - Listing 6-17.sql | 25 ++ .../Chapter 06 - Listing 6-18.sql | 7 + .../Chapter 06 - Listing 6-19.sql | 15 + .../Chapter 06 - Listing 6-20.sql | 12 + .../Chapter 06 - Listing 6-21.sql | 6 + .../Chapter 06 - Listing 6-22.sql | 35 ++ .../Chapter 06 - Listing 6-23.sql | 17 + .../Chapter 06 - Listing 6-24.sql | 14 + .../Chapter 06 - Listing 6-25.sql | 12 + .../Chapter 06 - Listing 6-26.sql | 11 + .../Chapter 06 - Listing 6-27.sql | 2 + .../Chapter 06 - Listing 6-28.sql | 17 + ...Performance Indexing - Chapter 06.ssms_suo | Bin 0 -> 33792 bytes .../Performance Indexing - Chapter 06.ssmssln | 16 + ...formance Indexing - Chapter 06.ssmssqlproj | 196 +++++++++ .../Chapter 07 - Listing 7-01.sql | 16 + .../Chapter 07 - Listing 7-02.sql | 15 + .../Chapter 07 - Listing 7-03.sql | 4 + .../Chapter 07 - Listing 7-04.sql | 2 + .../Chapter 07 - Listing 7-05.sql | 18 + .../Chapter 07 - Listing 7-06.sql | 35 ++ .../Chapter 07 - Listing 7-07.sql | 24 ++ .../Chapter 07 - Listing 7-08.sql | 12 + .../Chapter 07 - Listing 7-09.sql | 21 + .../Chapter 07 - Listing 7-10.sql | 13 + .../Chapter 07 - Listing 7-11.sql | 14 + ...Performance Indexing - Chapter 07.ssms_suo | Bin 0 -> 18944 bytes .../Performance Indexing - Chapter 07.ssmssln | 16 + ...formance Indexing - Chapter 07.ssmssqlproj | 94 +++++ .../Chapter 08 - Listing 8-01.sql | 14 + .../Chapter 08 - Listing 8-02.sql | 14 + .../Chapter 08 - Listing 8-03.sql | 6 + .../Chapter 08 - Listing 8-04.sql | 14 + .../Chapter 08 - Listing 8-05.sql | 17 + .../Chapter 08 - Listing 8-06.sql | 43 ++ .../Chapter 08 - Listing 8-07.sql | 9 + .../Chapter 08 - Listing 8-08.sql | 9 + .../Chapter 08 - Listing 8-09.sql | 45 +++ .../Chapter 08 - Listing 8-10.sql | 11 + .../Chapter 08 - Listing 8-11.sql | 11 + .../Chapter 08 - Listing 8-12.sql | 32 ++ .../Chapter 08 - Listing 8-13.sql | 16 + .../Chapter 08 - Listing 8-14.sql | 5 + .../Chapter 08 - Listing 8-15.sql | 6 + .../Chapter 08 - Listing 8-16.sql | 6 + .../Chapter 08 - Listing 8-17.sql | 7 + .../Chapter 08 - Listing 8-18.sql | 7 + .../Chapter 08 - Listing 8-19.sql | 7 + .../Chapter 08 - Listing 8-20.sql | 8 + .../Chapter 08 - Listing 8-21.sql | 5 + .../Chapter 08 - Listing 8-22.sql | 9 + .../Chapter 08 - Listing 8-23.sql | 13 + .../Chapter 08 - Listing 8-24.sql | 11 + .../Chapter 08 - Listing 8-25.sql | 11 + .../Chapter 08 - Listing 8-26.sql | 27 ++ .../Chapter 08 - Listing 8-27.sql | 24 ++ .../Chapter 08 - Listing 8-28.sql | 9 + .../Chapter 08 - Listing 8-29.sql | 11 + .../Chapter 08 - Listing 8-30.sql | 19 + .../Chapter 08 - Listing 8-31.sql | 24 ++ .../Chapter 08 - Listing 8-32.sql | 33 ++ .../Chapter 08 - Listing 8-33.sql | 12 + .../Chapter 08 - Listing 8-34.sql | 10 + .../Chapter 08 - Listing 8-35.sql | 18 + .../Chapter 08 - Listing 8-36.sql | 10 + .../Chapter 08 - Listing 8-37.sql | 7 + .../Chapter 08 - Listing 8-38.sql | 16 + .../Chapter 08 - Listing 8-39.sql | 19 + .../Chapter 08 - Listing 8-40.sql | 20 + ...Performance Indexing - Chapter 08.ssms_suo | Bin 0 -> 48128 bytes .../Performance Indexing - Chapter 08.ssmssln | 17 + ...formance Indexing - Chapter 08.ssmssqlproj | 268 +++++++++++++ .../Chapter 09 - Listing 9-01.sql | 7 + .../Chapter 09 - Listing 9-02.sql | 7 + .../Chapter 09 - Listing 9-03.sql | 11 + .../Chapter 09 - Listing 9-04.sql | 9 + .../Chapter 09 - Listing 9-05.sql | 7 + .../Chapter 09 - Listing 9-06.sql | 8 + .../Chapter 09 - Listing 9-07.sql | 6 + .../Chapter 09 - Listing 9-08.sql | 9 + .../Chapter 09 - Listing 9-09.sql | 5 + .../Chapter 09 - Listing 9-10.sql | 9 + .../Chapter 09 - Listing 9-11.sql | 11 + .../Chapter 09 - Listing 9-12.sql | 11 + .../Chapter 09 - Listing 9-13.sql | 14 + ...Performance Indexing - Chapter 09.ssms_suo | Bin 0 -> 20480 bytes .../Performance Indexing - Chapter 09.ssmssln | 16 + ...formance Indexing - Chapter 09.ssmssqlproj | 106 +++++ .../Chapter 10 - Listing 10-01.sql | 18 + .../Chapter 10 - Listing 10-02.sql | 61 +++ .../Chapter 10 - Listing 10-03.sql | 20 + .../Chapter 10 - Listing 10-04.sql | 34 ++ .../Chapter 10 - Listing 10-05.sql | 60 +++ .../Chapter 10 - Listing 10-06.sql | 25 ++ .../Chapter 10 - Listing 10-07.sql | 80 ++++ .../Chapter 10 - Listing 10-08.sql | 107 +++++ .../Chapter 10 - Listing 10-09.sql | 51 +++ .../Chapter 10 - Listing 10-10.sql | 190 +++++++++ .../Chapter 10 - Listing 10-11.sql | 32 ++ .../Chapter 10 - Listing 10-12.sql | 48 +++ .../Chapter 10 - Listing 10-13.sql | 27 ++ .../Chapter 10 - Listing 10-14.sql | 17 + .../Chapter 10 - Listing 10-15.sql | 31 ++ .../Chapter 10 - Listing 10-16.sql | 19 + .../Chapter 10 - Listing 10-17.sql | 11 + .../Chapter 10 - Listing 10-18.sql | 39 ++ .../Chapter 10 - Listing 10-19.sql | 9 + .../Chapter 10 - Listing 10-20.sql | 8 + .../Chapter 10 - Listing 10-21.sql | 8 + .../Chapter 10 - Listing 10-22.sql | 29 ++ .../Chapter 10 - Listing 10-23.sql | 18 + .../Chapter 10 - Listing 10-24.sql | 55 +++ .../Chapter 10 - Listing 10-25.sql | 4 + .../Chapter 10 - Listing 10-26.sql | 28 ++ .../Chapter 10 - Listing 10-27.sql | 14 + .../Chapter 10 - Listing 10-28.sql | 28 ++ .../Chapter 10 - Listing 10-29.sql | 5 + .../Chapter 10 - Listing 10-30.sql | 22 + .../Chapter 10 - Listing 10-31.sql | 28 ++ .../Chapter 10 - Listing 10-32.sql | 26 ++ .../Chapter 10 - Listing 10-33.sql | 28 ++ .../Chapter 10 - Listing 10-34.sql | 22 + .../Chapter 10 - Listing 10-35.sql | 28 ++ .../Chapter 10 - Listing 10-36.sql | 28 ++ .../Chapter 10 - Listing 10-37.sql | 37 ++ .../Chapter 10 - Listing 10-38.sql | 22 + .../Chapter 10 - Listing 10-39.sql | 38 ++ .../Chapter 10 - Listing 10-40.sql | 20 + .../Chapter 10 - Listing 10-41.sql | 18 + .../Chapter 10 - Listing 10-42.sql | 17 + .../Chapter 10 - Listing 10-43.sql | 38 ++ .../Chapter 10 - Listing 10-44.sql | 20 + .../Chapter 10 - Listing 10-45.sql | 35 ++ .../Chapter 10 - Listing 10-46.sql | 20 + .../Chapter 10 - Listing 10-47.sql | 32 ++ .../Chapter 10 - Listing 10-48.sql | 11 + .../Chapter 10 - Listing 10-49.sql | 29 ++ .../Chapter 10 - Listing 10-50.sql | 20 + .../Chapter 10 - Listing 10-51.sql | 44 ++ .../Chapter 10 - Listing 10-52.sql | 49 +++ .../Chapter 10 - Listing 10-53.sql | 49 +++ .../Chapter 10 - Listing 10-54.sql | 23 ++ .../Chapter 10 - Listing 10-55.sql | 2 + .../Chapter 10 - Listing 10-56.sql | 22 + .../Chapter 10 - Listing 10-57.sql | 25 ++ .../Chapter 10 - Listing 10-58.sql | 17 + ...Performance Indexing - Chapter 10.ssms_suo | Bin 0 -> 75264 bytes .../Performance Indexing - Chapter 10.ssmssln | 17 + ...formance Indexing - Chapter 10.ssmssqlproj | 376 ++++++++++++++++++ README.md | 15 + contributing.md | 14 + 279 files changed, 6032 insertions(+) create mode 100644 9781430237419.jpg create mode 100644 LICENSE.txt create mode 100644 Performance Indexing - Chapter 01/Chapter 01 - Listing 1-01.sql create mode 100644 Performance Indexing - Chapter 01/Chapter 01 - Listing 1-02.sql create mode 100644 Performance Indexing - Chapter 01/Chapter 01 - Listing 1-03.sql create mode 100644 Performance Indexing - Chapter 01/Chapter 01 - Listing 1-04.sql create mode 100644 Performance Indexing - Chapter 01/Chapter 01 - Listing 1-05.sql create mode 100644 Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssms_suo create mode 100644 Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssln create mode 100644 Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssqlproj create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-01.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-02.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-03.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-04.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-05.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-06.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-07.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-08.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-09.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-10.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-11.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-12.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-13.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-14.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-15.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-16.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-17.sql create mode 100644 Performance Indexing - Chapter 02/Chapter 02 - Listing 2-18.sql create mode 100644 Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssms_suo create mode 100644 Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssln create mode 100644 Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssqlproj create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-01.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-02.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-03.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-04.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-05.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-06.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-07.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-08.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-09.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-10.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-11.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-12.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-13.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-14.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-15.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-16.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-17.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-18.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-19.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-20.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-21.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-22.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-23.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-24.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-25.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-26.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-27.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-28.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-29.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-30.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-31.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-32.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-33.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-34.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-35.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-36.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-37.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-38.sql create mode 100644 Performance Indexing - Chapter 03/Chapter 03 - Listing 3-39.sql create mode 100644 Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssms_suo create mode 100644 Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssln create mode 100644 Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssqlproj create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-01.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-02.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-03.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-04.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-05.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-06.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-07.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-08.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-09.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-10.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-11.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-12.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-13.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-14.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-15.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-16.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-17.sql create mode 100644 Performance Indexing - Chapter 04/Chapter 04 - Listing 4-18.sql create mode 100644 Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssms_suo create mode 100644 Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssln create mode 100644 Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssqlproj create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-01.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-02.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-03.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-04.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-05.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-06.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-07.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-08.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-09.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-10.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-11.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-12.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-13.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-14.sql create mode 100644 Performance Indexing - Chapter 05/Chapter 05 - Listing 5-15.sql create mode 100644 Performance Indexing - Chapter 05/Performance Indexing - Chapter 05.ssms_suo create mode 100644 Performance Indexing - Chapter 05/Performance Indexing - Chapter 05.ssmssln create mode 100644 Performance Indexing - Chapter 05/Performance Indexing - Chapter 05.ssmssqlproj create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-01.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-02.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-03.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-04.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-05.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-06.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-07.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-08.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-09.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-10.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-11.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-12.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-13.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-14.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-15.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-16.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-17.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-18.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-19.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-20.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-21.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-22.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-23.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-24.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-25.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-26.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-27.sql create mode 100644 Performance Indexing - Chapter 06/Chapter 06 - Listing 6-28.sql create mode 100644 Performance Indexing - Chapter 06/Performance Indexing - Chapter 06.ssms_suo create mode 100644 Performance Indexing - Chapter 06/Performance Indexing - Chapter 06.ssmssln create mode 100644 Performance Indexing - Chapter 06/Performance Indexing - Chapter 06.ssmssqlproj create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-01.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-02.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-03.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-04.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-05.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-06.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-07.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-08.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-09.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-10.sql create mode 100644 Performance Indexing - Chapter 07/Chapter 07 - Listing 7-11.sql create mode 100644 Performance Indexing - Chapter 07/Performance Indexing - Chapter 07.ssms_suo create mode 100644 Performance Indexing - Chapter 07/Performance Indexing - Chapter 07.ssmssln create mode 100644 Performance Indexing - Chapter 07/Performance Indexing - Chapter 07.ssmssqlproj create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-01.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-02.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-03.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-04.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-05.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-06.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-07.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-08.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-09.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-10.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-11.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-12.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-13.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-14.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-15.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-16.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-17.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-18.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-19.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-20.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-21.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-22.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-23.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-24.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-25.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-26.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-27.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-28.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-29.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-30.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-31.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-32.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-33.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-34.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-35.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-36.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-37.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-38.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-39.sql create mode 100644 Performance Indexing - Chapter 08/Chapter 08 - Listing 8-40.sql create mode 100644 Performance Indexing - Chapter 08/Performance Indexing - Chapter 08.ssms_suo create mode 100644 Performance Indexing - Chapter 08/Performance Indexing - Chapter 08.ssmssln create mode 100644 Performance Indexing - Chapter 08/Performance Indexing - Chapter 08.ssmssqlproj create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-01.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-02.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-03.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-04.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-05.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-06.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-07.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-08.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-09.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-10.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-11.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-12.sql create mode 100644 Performance Indexing - Chapter 09/Chapter 09 - Listing 9-13.sql create mode 100644 Performance Indexing - Chapter 09/Performance Indexing - Chapter 09.ssms_suo create mode 100644 Performance Indexing - Chapter 09/Performance Indexing - Chapter 09.ssmssln create mode 100644 Performance Indexing - Chapter 09/Performance Indexing - Chapter 09.ssmssqlproj create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-01.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-02.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-03.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-04.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-05.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-06.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-07.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-08.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-09.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-10.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-11.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-12.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-13.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-14.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-15.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-16.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-17.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-18.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-19.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-20.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-21.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-22.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-23.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-24.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-25.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-26.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-27.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-28.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-29.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-30.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-31.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-32.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-33.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-34.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-35.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-36.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-37.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-38.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-39.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-40.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-41.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-42.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-43.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-44.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-45.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-46.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-47.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-48.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-49.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-50.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-51.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-52.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-53.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-54.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-55.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-56.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-57.sql create mode 100644 Performance Indexing - Chapter 10/Chapter 10 - Listing 10-58.sql create mode 100644 Performance Indexing - Chapter 10/Performance Indexing - Chapter 10.ssms_suo create mode 100644 Performance Indexing - Chapter 10/Performance Indexing - Chapter 10.ssmssln create mode 100644 Performance Indexing - Chapter 10/Performance Indexing - Chapter 10.ssmssqlproj create mode 100644 README.md create mode 100644 contributing.md diff --git a/9781430237419.jpg b/9781430237419.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c14eccf2436dec9cf029981a207dfef2020abb01 GIT binary patch literal 11486 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 literal 0 HcmV?d00001 diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..b4c59af --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,27 @@ +Freeware License, some rights reserved + +Copyright (c) 2012 Jason Strate and Ted Krueger + +Permission is hereby granted, free of charge, to anyone obtaining a copy +of this software and associated documentation files (the "Software"), +to work with the Software within the limits of freeware distribution and fair use. +This includes the rights to use, copy, and modify the Software for personal use. +Users are also allowed and encouraged to submit corrections and modifications +to the Software for the benefit of other users. + +It is not allowed to reuse, modify, or redistribute the Software for +commercial use in any way, or for a user’s educational materials such as books +or blog articles without prior permission from the copyright holder. + +The above copyright notice and this permission notice need to be included +in all copies or substantial portions of the software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS OR APRESS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + diff --git a/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-01.sql b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-01.sql new file mode 100644 index 0000000..b90b7f7 --- /dev/null +++ b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-01.sql @@ -0,0 +1,13 @@ +--Listing 1-1. CREATE INDEX Syntax +CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name + ON ( column [ ASC | DESC ] [ ,…n ] ) + [ INCLUDE ( column_name [ ,…n ] ) ] + [ WHERE ] + [ WITH ( [ ,…n ] ) ] + [ ON { partition_scheme_name ( column_name ) + | ?legroup_name + | default + } + ] + [ FILESTREAM_ON { ?lestream_?legroup_name | partition_scheme_name | "NULL" } ] +[ ; ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-02.sql b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-02.sql new file mode 100644 index 0000000..e5bd58d --- /dev/null +++ b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-02.sql @@ -0,0 +1,14 @@ +--Listing 1-2. Index Options +PAD_INDEX = { ON | OFF } +| FILLFACTOR = ?llfactor +| SORT_IN_TEMPDB = { ON | OFF } +| IGNORE_DUP_KEY = { ON | OFF } +| STATISTICS_NORECOMPUTE = { ON | OFF } +| DROP_EXISTING = { ON | OFF } +| ONLINE = { ON | OFF } +| ALLOW_ROW_LOCKS = { ON | OFF } +| ALLOW_PAGE_LOCKS = { ON | OFF } +| MAXDOP = max_degree_of_parallelism +| DATA_COMPRESSION = { NONE | ROW | PAGE} + [ ON PARTITIONS ( { | } + [ , …n ] ) ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-03.sql b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-03.sql new file mode 100644 index 0000000..5cdf8da --- /dev/null +++ b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-03.sql @@ -0,0 +1,19 @@ +--Listing 1-3. ALTER INDEX Syntax +ALTER INDEX { index_name | ALL } + ON + { REBUILD + [ [PARTITION = ALL] + [ WITH ( [ ,…n ] ) ] + | [ PARTITION = partition_number + [ WITH ( + [ ,…n ] ) + ] + ] + ] + | DISABLE + | REORGANIZE + [ PARTITION = partition_number ] + [ WITH ( LOB_COMPACTION = { ON | OFF } ) ] + | SET ( [ ,…n ] ) + } +[ ; ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-04.sql b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-04.sql new file mode 100644 index 0000000..9158b45 --- /dev/null +++ b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-04.sql @@ -0,0 +1,4 @@ +--Listing 1-4. DROP INDEX Syntax +DROP INDEX + index_name ON + [ WITH ( [ ,…n ] ) ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-05.sql b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-05.sql new file mode 100644 index 0000000..4c29ad1 --- /dev/null +++ b/Performance Indexing - Chapter 01/Chapter 01 - Listing 1-05.sql @@ -0,0 +1,10 @@ +--Listing 1-5. DROP INDEX Options +MAXDOP = max_degree_of_parallelism + | ONLINE = { ON | OFF } + | MOVE TO { partition_scheme_name ( column_name ) + | ?legroup_name + | "default" + } + [ FILESTREAM_ON { partition_scheme_name + | ?lestream_?legroup_name + | "default" } ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssms_suo b/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..a429a394567a881868e6c8f07017c3c853aa1576 GIT binary patch literal 12800 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 DAbL=3 literal 0 HcmV?d00001 diff --git a/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssln b/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssln new file mode 100644 index 0000000..bc9a81e --- /dev/null +++ b/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# SQL Server Management Studio Solution File, Format Version 11.00 +Project("{4F2E2C19-372F-40D8-9FA7-9D2138C6997A}") = "Performance Indexing - Chapter 01", "Performance Indexing - Chapter 01.ssmssqlproj", "{648B8869-B6F9-4AC5-A36B-2E2059141C1A}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Default|Default = Default|Default + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {648B8869-B6F9-4AC5-A36B-2E2059141C1A}.Default|Default.ActiveCfg = Default + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssqlproj b/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssqlproj new file mode 100644 index 0000000..a6c826a --- /dev/null +++ b/Performance Indexing - Chapter 01/Performance Indexing - Chapter 01.ssmssqlproj @@ -0,0 +1,58 @@ + + + + + + + 2013-06-13T11:30:26.6896776-04:00 + SQL + FL-WS-CON-JS01 + + Windows Authentication + + 15 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 01 - Listing 1-01.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 01 - Listing 1-02.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 01 - Listing 1-03.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 01 - Listing 1-04.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 01 - Listing 1-05.sql + + + + + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-01.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-01.sql new file mode 100644 index 0000000..a565aac --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-01.sql @@ -0,0 +1,4 @@ +--Listing 2-1. DBCC EXTENTINFO Syntax +DBCC EXTENTINFO ( {database_name | database_id | 0} + , {table_name | table_object_id}, { index_name | index_id | -1} + , { partition_id | 0} \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-02.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-02.sql new file mode 100644 index 0000000..b2063ac --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-02.sql @@ -0,0 +1,16 @@ +--Listing 2-2. DBCC EXTENTINFO Example One +USE master +GO +CREATE DATABASE Chapter2Internals +GO +USE Chapter2Internals +GO +CREATE TABLE dbo.IndexInternalsOne + ( + RowID INT IDENTITY(1,1) + ,FillerData CHAR(8000) + ) +GO +INSERT INTO dbo.IndexInternalsOne DEFAULT VALUES +GO 4 +DBCC EXTENTINFO(0, IndexInternalsOne, -1) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-03.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-03.sql new file mode 100644 index 0000000..8115fb2 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-03.sql @@ -0,0 +1,7 @@ +--Listing 2-3. DBCC EXTENTINFO Example Two +INSERT INTO dbo.IndexInternalsOne +VALUES ('Demo'),('Demo'); +GO +INSERT INTO dbo.IndexInternalsOne DEFAULT VALUES +GO 4 +DBCC EXTENTINFO(0, IndexInternalsOne, -1) GOO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-04.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-04.sql new file mode 100644 index 0000000..2239663 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-04.sql @@ -0,0 +1,5 @@ +--Listing 2-4. DBCC EXTENTINFO Example Three +ALTER TABLE dbo.IndexInternalsOne REBUILD +GO +DBCC EXTENTINFO(0, IndexInternalsOne, -1) +GOO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-05.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-05.sql new file mode 100644 index 0000000..d034cf1 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-05.sql @@ -0,0 +1,13 @@ +--Listing 2-5. DBCC EXTENTINFO Example Four +CREATE TABLE dbo.IndexInternalsTwo + ( + RowID INT IDENTITY(1,1) + ,FillerData CHAR(8000) + ) +GO +INSERT INTO dbo.IndexInternalsTwo +VALUES ('Demo'),('Demo'),('Demo'),('Demo'),('Demo') + ,('Demo'),('Demo'),('Demo'),('Demo'); +GO +DBCC EXTENTINFO(0, IndexInternalsTwo, -1) +GOO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-06.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-06.sql new file mode 100644 index 0000000..19a82dd --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-06.sql @@ -0,0 +1,3 @@ +--Listing 2-6. DBCC IND Syntax +DBCC IND ( {'dbname' | dbid}, {'table_name' | table_object_id}, + {'index_name' | index_id | -1}) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-07.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-07.sql new file mode 100644 index 0000000..36431eb --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-07.sql @@ -0,0 +1,6 @@ +--Listing 2-7. DBCC IND Example One +USE Chapter2Internals; +GO +DBCC IND (0, 'IndexInternalsOne',-1); +GO +DBCC IND (0, 'IndexInternalsTwo',-1); \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-08.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-08.sql new file mode 100644 index 0000000..e56bc67 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-08.sql @@ -0,0 +1,13 @@ +--Listing 2-8. DBCC IND Example Two +USE Chapter2Internals +GO +CREATE TABLE dbo.IndexInternalsThree + ( + RowID INT IDENTITY(1,1) + ,FillerData CHAR(8000) + ,CONSTRAINT PK_IndexInternalsThree PRIMARY KEY CLUSTERED (RowID) + ) +GO +INSERT INTO dbo.IndexInternalsThree DEFAULT VALUES +GO 4 +DBCC IND (0, 'IndexInternalsThree',-1) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-09.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-09.sql new file mode 100644 index 0000000..1f4727a --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-09.sql @@ -0,0 +1,3 @@ +--Listing 2-9. DBCC PAGE Syntax +DBCC PAGE ( { database_name | database_id | 0}, ?le_number, page_number + [,print_option ={0|1|2|3} ]) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-10.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-10.sql new file mode 100644 index 0000000..47926f3 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-10.sql @@ -0,0 +1,15 @@ +--Listing 2-10. DBCC IND Query for DBCC PAGE Examples +USE [Chapter2Internals]; +GO +CREATE TABLE dbo.IndexInternalsFour + ( + RowID int IDENTITY(1,1) NOT NULL + ,FillerData varchar(2000) NULL + ,CONSTRAINT PK_IndexInternalsFour PRIMARY KEY CLUSTERED ([RowID] ASC) + ); +INSERT INTO dbo.IndexInternalsFour (FillerData) +VALUES (REPLICATE(1,2000)),(REPLICATE(2,2000)),(REPLICATE(3,2000)) + ,(REPLICATE(4,2000)),(REPLICATE(5,25)); +GO +DBCC IND(0, 'dbo.IndexInternalsFour', -1); +GOO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-11.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-11.sql new file mode 100644 index 0000000..5aab6c8 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-11.sql @@ -0,0 +1,3 @@ +--Listing 2-11. DBCC PAGE with Page Header Only Print Option +DBCC TRACEON(3604) +DBCC PAGE(0,1,279,0) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-12.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-12.sql new file mode 100644 index 0000000..34d6b80 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-12.sql @@ -0,0 +1,3 @@ +--Listing 2-12. DBCC PAGE with Hex Rows Print Option +DBCC TRACEON(3604) +DBCC PAGE(0,1,279,1) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-13.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-13.sql new file mode 100644 index 0000000..5c3b570 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-13.sql @@ -0,0 +1,3 @@ +--Listing 2-13. DBCC PAGE with Hex Data Print Option +DBCC TRACEON(3604) +DBCC PAGE(0,1,279,2) \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-14.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-14.sql new file mode 100644 index 0000000..40d53df --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-14.sql @@ -0,0 +1,4 @@ +--Listing 2-14. DBCC PAGE with Row Data Print Option +DBCC TRACEON(3604) +DBCC PAGE(0,1,296,3) -- Data page +DBCC PAGE(0,1,279,3) -- Index page \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-15.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-15.sql new file mode 100644 index 0000000..44e8f86 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-15.sql @@ -0,0 +1,15 @@ +--Listing 2-15. Forwarded Record Scenario +USE AdventureWorks2012 +GO +CREATE TABLE dbo.HeapForwardedRecords +( + RowId INT IDENTITY(1,1) + ,FillerData VARCHAR(2500) +); +INSERT INTO dbo.HeapForwardedRecords (FillerData) +SELECT TOP 24 REPLICATE('X',2000) +FROM sys.objects; +DECLARE @ObjectID INT = OBJECT_ID('dbo.HeapForwardedRecords'); +SELECT object_id, index_type_desc, page_count, record_count, forwarded_record_count +FROM sys.dm_db_index_physical_stats (DB_ID(), @ObjectID, NULL, NULL, 'DETAILED'); +GOO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-16.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-16.sql new file mode 100644 index 0000000..64b147f --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-16.sql @@ -0,0 +1,10 @@ +--Listing 2-16. Script to Cause Forwarded Records +USE AdventureWorks2012 +GO +UPDATE dbo.HeapForwardedRecords +SET FillerData = REPLICATE('X',2500) +WHERE RowId % 2 = 0; +DECLARE @ObjectID INT = OBJECT_ID('dbo.HeapForwardedRecords'); +SELECT object_id, index_type_desc, page_count, record_count, forwarded_record_count +FROM sys.dm_db_index_physical_stats (DB_ID(), @ObjectID, NULL, NULL, 'DETAILED'); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-17.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-17.sql new file mode 100644 index 0000000..fa3fca6 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-17.sql @@ -0,0 +1,16 @@ +--Listing 2-17. Page Split Scenario +USE AdventureWorks2012 +GO +CREATE TABLE dbo.ClusteredPageSplits +( + RowId INT IDENTITY(1,1) + ,FillerData VARCHAR(2500) + ,CONSTRAINT PK_ClusteredPageSplits PRIMARY KEY CLUSTERED (RowId) +); +INSERT INTO dbo.ClusteredPageSplits (FillerData) +SELECT TOP 24 REPLICATE('X',2000) +FROM sys.objects; +DECLARE @ObjectID INT = OBJECT_ID('dbo.ClusteredPageSplits'); +SELECT object_id, index_type_desc, index_level, page_count, record_count +FROM sys.dm_db_index_physical_stats (DB_ID(), @ObjectID, NULL, NULL, 'DETAILED'); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-18.sql b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-18.sql new file mode 100644 index 0000000..17c3b76 --- /dev/null +++ b/Performance Indexing - Chapter 02/Chapter 02 - Listing 2-18.sql @@ -0,0 +1,9 @@ +--Listing 2-18. Script to Cause Page Splits +USE AdventureWorks2012 +GO +UPDATE dbo.ClusteredPageSplits +SET FillerData = REPLICATE('X',2500) +WHERE RowId % 2 = 0; +DECLARE @ObjectID INT = OBJECT_ID('dbo.ClusteredPageSplits'); +SELECT object_id, index_type_desc, index_level, page_count, record_count +FROM sys.dm_db_index_physical_stats (DB_ID(), @ObjectID, NULL, NULL, 'DETAILED'); diff --git a/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssms_suo b/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..6a66c803e3e495f7ebc504bfcb2312b0d6cb6a86 GIT binary patch literal 19968 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 literal 0 HcmV?d00001 diff --git a/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssln b/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssln new file mode 100644 index 0000000..201b6c7 --- /dev/null +++ b/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# SQL Server Management Studio Solution File, Format Version 11.00 +Project("{4F2E2C19-372F-40D8-9FA7-9D2138C6997A}") = "Performance Indexing - Chapter 02", "Performance Indexing - Chapter 02.ssmssqlproj", "{2C4687EB-DFF8-4471-92C2-2F2CAE4D567D}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Default|Default = Default|Default + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {2C4687EB-DFF8-4471-92C2-2F2CAE4D567D}.Default|Default.ActiveCfg = Default + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssqlproj b/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssqlproj new file mode 100644 index 0000000..406a199 --- /dev/null +++ b/Performance Indexing - Chapter 02/Performance Indexing - Chapter 02.ssmssqlproj @@ -0,0 +1,136 @@ + + + + + + + 2013-06-13T11:28:59.6777008-04:00 + SQL + FL-WS-CON-JS01 + + Windows Authentication + + 15 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-01.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-02.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-03.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-04.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-05.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-06.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-07.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-08.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-09.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-10.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-11.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-12.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-13.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-14.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-15.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-16.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-17.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 02 - Listing 2-18.sql + + + + + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-01.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-01.sql new file mode 100644 index 0000000..f0beff0 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-01.sql @@ -0,0 +1,3 @@ +--Listing 3-1. DBCC SHOW_STATISTICS Syntax +DBCC SHOW_STATISTICS ( table_or_indexed_view_name, target ) +[ WITH [ < options > ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-02.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-02.sql new file mode 100644 index 0000000..ee90314 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-02.sql @@ -0,0 +1,3 @@ +--Listing 3-2. DBCC SHOW_STATISTICS for Index on Sales.SalesOrderDetail Table +DBCC SHOW_STATISTICS ( 'Sales.SalesOrderDetail’ +, PK_SalesOrderDetail_SalesOrderID_SalesOrderDetailID ) \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-03.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-03.sql new file mode 100644 index 0000000..7cdca6f --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-03.sql @@ -0,0 +1,12 @@ +--Listing 3-3. Query to Check AVG_RANGE_ROWS Estimate +USE AdventureWorks2012 +GO +SELECT (COUNT(*)*1.)/COUNT(DISTINCT SalesOrderID) AS AverageRows +FROM Sales.SalesOrderDetail +WHERE SalesOrderID BETWEEN 43672 AND 43677; +SELECT (COUNT(*)*1.)/COUNT(DISTINCT SalesOrderID) AS AverageRows +FROM Sales.SalesOrderDetail +WHERE SalesOrderID BETWEEN 43675 AND 43677; +SELECT (COUNT(*)*1.)/COUNT(DISTINCT SalesOrderID) AS AverageRows +FROM Sales.SalesOrderDetail +WHERE SalesOrderID BETWEEN 43675 AND 43680; \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-04.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-04.sql new file mode 100644 index 0000000..13000cf --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-04.sql @@ -0,0 +1,2 @@ +--Listing 3-4. STATS_DATE Syntax +STATS_DATE ( object_id, stats_id ) \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-05.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-05.sql new file mode 100644 index 0000000..0957e51 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-05.sql @@ -0,0 +1,15 @@ +--Listing 3-5. Query for Header Columns in sys.dm_db_index_usage_stats +USE AdventureWorks2012 +GO +SELECT TOP 10 OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.database_id + ,ius.object_id + ,ius.index_id +FROM sys.indexes i + LEFT JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.index_id IS NULL +AND OBJECTPROPERTY(i.object_id, 'IsUserTable') = 1 \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-06.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-06.sql new file mode 100644 index 0000000..f941736 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-06.sql @@ -0,0 +1,9 @@ +--Listing 3-6. Index Seek Queries +USE AdventureWorks2012 +GO +SELECT * FROM Sales.SalesOrderDetail +WHERE SalesOrderID = 43659 +GO +SELECT * FROM Sales.SalesOrderDetail +WHERE SalesOrderID BETWEEN 43659 AND 44659 +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-07.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-07.sql new file mode 100644 index 0000000..f66405f --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-07.sql @@ -0,0 +1,15 @@ +--Listing 3-7. Query for index_seeks from sys.dm_db_index_usage_stats +USE AdventureWorks2012 +GO +SELECT TOP 10 + OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.user_seeks + ,ius.last_user_seek +FROM sys.indexes i + INNER JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.object_id = OBJECT_ID('Sales.SalesOrderDetail') + GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-08.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-08.sql new file mode 100644 index 0000000..3495452 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-08.sql @@ -0,0 +1,8 @@ +--Listing 3-8. Index Scan Queries +USE AdventureWorks2012 +GO +SELECT * FROM Sales.SalesOrderDetail +GO +SELECT * FROM Sales.SalesOrderDetail +WHERE CarrierTrackingNumber = '4911-403C-98' +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-09.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-09.sql new file mode 100644 index 0000000..b76fa69 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-09.sql @@ -0,0 +1,15 @@ +--Listing 3-9. Query for index_scans From sys.dm_db_index_usage_stats +USE AdventureWorks2012 +GO +SELECT TOP 10 + OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.user_scans + ,ius.last_user_scan +FROM sys.indexes i + INNER JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.object_id = OBJECT_ID('Sales.SalesOrderDetail') + GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-10.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-10.sql new file mode 100644 index 0000000..5f034a4 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-10.sql @@ -0,0 +1,7 @@ +--Listing 3-10. Index Lookup Query +USE AdventureWorks2012 +GO +SELECT ProductID, CarrierTrackingNumber +FROM Sales.SalesOrderDetail +WHERE ProductID = 778 +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-11.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-11.sql new file mode 100644 index 0000000..0c29e32 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-11.sql @@ -0,0 +1,13 @@ +--Listing 3-11. Query for index_lookups from sys.dm_db_index_usage_stats +SELECT TOP 10 + OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.user_seeks + ,ius.user_lookups + ,ius.last_user_lookup +FROM sys.indexes i + INNER JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.object_id = OBJECT_ID('Sales.SalesOrderDetail') \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-12.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-12.sql new file mode 100644 index 0000000..0291164 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-12.sql @@ -0,0 +1,18 @@ +--Listing 3-12. Index Lookup Query +USE AdventureWorks2012 +GO +INSERT INTO Sales.SalesOrderDetail +(SalesOrderID, CarrierTrackingNumber, OrderQty, ProductID, SpecialOfferID, UnitPrice, +UnitPriceDiscount, Modi?edDate) +SELECT SalesOrderID, CarrierTrackingNumber, OrderQty, ProductID, SpecialOfferID, UnitPrice, +UnitPriceDiscount, GETDATE() AS Modi?edDate +FROM Sales.SalesOrderDetail +WHERE SalesOrderDetailID = 1; +GO +UPDATE Sales.SalesOrderDetail +SET CarrierTrackingNumber = '999-99-9999' +WHERE Modi?edDate > DATEADD(d, -1, GETDATE()); +GO +DELETE FROM Sales.SalesOrderDetail +WHERE Modi?edDate > DATEADD(d, -1, GETDATE()); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-13.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-13.sql new file mode 100644 index 0000000..c51422d --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-13.sql @@ -0,0 +1,12 @@ +--Listing 3-13. Query for index_lookups from sys.dm_db_index_usage_stats +SELECT TOP 10 + OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.user_updates + ,ius.last_user_update +FROM sys.indexes i + INNER JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.object_id = OBJECT_ID('Sales.SalesOrderDetail') \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-14.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-14.sql new file mode 100644 index 0000000..51167a7 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-14.sql @@ -0,0 +1,6 @@ +--Listing 3-14. Update for Sales.SalesOrderDetail +USE AdventureWorks2012 +GO +UPDATE Sales.SalesOrderDetail +SET UnitPriceDiscount = 0.01 +WHERE UnitPriceDiscount = 0.00 \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-15.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-15.sql new file mode 100644 index 0000000..c998937 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-15.sql @@ -0,0 +1,17 @@ +--Listing 3-15. Query for System Columns in sys.dm_db_index_usage_stats +SELECT OBJECT_NAME(i.object_id) AS table_name + ,i.name AS index_name + ,ius.system_seeks + ,ius.system_scans + ,ius.system_lookups + ,ius.system_updates + ,ius.last_system_seek + ,ius.last_system_scan + ,ius.last_system_lookup + ,ius.last_system_update +FROM sys.indexes i + INNER JOIN sys.dm_db_index_usage_stats ius + ON i.object_id = ius.object_id + AND i.index_id = ius.index_id + AND ius.database_id = DB_ID() +WHERE ius.object_id = OBJECT_ID('Sales.SalesOrderDetail') \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-16.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-16.sql new file mode 100644 index 0000000..d9bea8b --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-16.sql @@ -0,0 +1,7 @@ +--Listing 3-16. Index Operational Stats Syntax +sys.dm_db_index_operational_stats ( + { database_id | NULL | 0 | DEFAULT } + , { object_id | NULL | 0 | DEFAULT } + , { index_id | 0 | NULL | -1 | DEFAULT } + , { partition_number | NULL | 0 | DEFAULT } +) \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-17.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-17.sql new file mode 100644 index 0000000..a569624 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-17.sql @@ -0,0 +1,37 @@ +--Listing 3-17. DML Activity Script +USE AdventureWorks +GO +IF OBJECT_ID('dbo.KungFu') IS NOT NULL + DROP TABLE dbo.KungFu +GO +CREATE TABLE dbo.KungFu +( + KungFuID INT +,Hustle BIT +,CONSTRAINT PK_KungFu_KungFuID PRIMARY KEY CLUSTERED (KungFuID) +) +GO +INSERT INTO dbo.KungFu + SELECT ROW_NUMBER() OVER (ORDER BY t.object_id) + ,t.object_id % 2 + FROM sys.tables t +GO +DELETE FROM dbo.KungFu +WHERE Hustle = 0 +GO +UPDATE dbo.KungFu +SET Hustle = 0 +WHERE Hustle = 1 +GO +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.leaf_insert_count + ,ios.leaf_update_count + ,ios.leaf_delete_count + ,ios.leaf_ghost_count +FROM sys.dm_db_index_operational_stats(DB_ID(),NULL,NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +WHERE ios.object_id = OBJECT_ID('dbo.KungFu') +ORDER BY ios.range_scan_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-18.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-18.sql new file mode 100644 index 0000000..71df125 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-18.sql @@ -0,0 +1,9 @@ +--Listing 3-18. Query for range_scan_count from sys.dm_db_index_operational_stats +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.range_scan_count +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('Sales.SalesOrderDetail'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios.range_scan_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-19.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-19.sql new file mode 100644 index 0000000..6a6731b --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-19.sql @@ -0,0 +1,9 @@ +--Listing 3-19. Query for singleton_lookup_count from sys.dm_db_index_operational_stats +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.singleton_lookup_count +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('Sales.SalesOrderDetail'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios. singleton_lookup_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-20.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-20.sql new file mode 100644 index 0000000..222d44c --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-20.sql @@ -0,0 +1,12 @@ +--Listing 3-20. T-SQL Script for Forward Records +CREATE TABLE dbo.ForwardedRecords + ( + ID INT IDENTITY(1,1) + ,VALUE VARCHAR(8000) + ); +INSERT INTO dbo.ForwardedRecords (VALUE) +SELECT REPLICATE(type, 500) +FROM sys.objects; +UPDATE dbo.ForwardedRecords +SET VALUE = REPLICATE(VALUE, 16) +WHERE ID%3 = 1; \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-21.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-21.sql new file mode 100644 index 0000000..3339977 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-21.sql @@ -0,0 +1,9 @@ +--Listing 3-21. Query for forwarded_fetch_count from sys.dm_db_index_operational_stats +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.forwarded_fetch_count +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('dbo.ForwardedRecords'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios.forwarded_fetch_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-22.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-22.sql new file mode 100644 index 0000000..eff4656 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-22.sql @@ -0,0 +1,9 @@ +--Listing 3-22. T-SQL Script to Generate Row Locks +USE AdventureWorks2012 +GO +SELECT SalesOrderID + ,SalesOrderDetailID + ,CarrierTrackingNumber + ,OrderQty +FROM Sales.SalesOrderDetail +WHERE ProductID = 710 \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-23.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-23.sql new file mode 100644 index 0000000..06c0737 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-23.sql @@ -0,0 +1,13 @@ +--Listing 3-23. Query for Row Locks in sys.dm_db_index_operational_stats +USE AdventureWorks2012 +GO +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.row_lock_count + ,ios.row_lock_wait_count + ,ios.row_lock_wait_in_ms +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('Sales.SalesOrderDetail'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios.range_scan_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-24.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-24.sql new file mode 100644 index 0000000..c7fd283 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-24.sql @@ -0,0 +1,13 @@ +--Listing 3-24. Query for Page Locks in sys.dm_db_index_operational_stats +USE AdventureWorks2012 +GO +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.page_lock_count + ,ios.page_lock_wait_count + ,ios.page_lock_wait_in_ms +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('Sales.SalesOrderDetail'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios.range_scan_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-25.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-25.sql new file mode 100644 index 0000000..e56345f --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-25.sql @@ -0,0 +1,6 @@ +--Listing 3-25. T-SQL Script to Generate Lock Promotion +USE AdventureWorks2012 +GO +UPDATE Sales.SalesOrderDetail +SET ProductID = ProductID +WHERE ProductID <= 712 \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-26.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-26.sql new file mode 100644 index 0000000..b2d234e --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-26.sql @@ -0,0 +1,12 @@ +--Listing 3-26. Query for Lock Escalation in sys.dm_db_index_operational_stats +USE AdventureWorks2012 +GO +SELECT OBJECT_NAME(ios.object_id) AS table_name + ,i.name AS index_name + ,ios.index_lock_promotion_attempt_count + ,ios.index_lock_promotion_count +FROM sys.dm_db_index_operational_stats(DB_ID(),OBJECT_ID('Sales.SalesOrderDetail'),NULL,NULL) ios + INNER JOIN sys.indexes i + ON i.object_id = ios.object_id + AND i.index_id = ios.index_id +ORDER BY ios.range_scan_count DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-27.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-27.sql new file mode 100644 index 0000000..a8cf5c6 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-27.sql @@ -0,0 +1,10 @@ +--Listing 3-27. T-SQL Script to Generate Page I/O Latch +USE AdventureWorks2012 +GO +DBCC DROPCLEANBUFFERS +GO +SELECT * +FROM Sales.SalesOrderDetail sod +INNER JOIN Sales.SalesOrderHeader soh ON sod.SalesOrderID = soh.SalesOrderID +INNER JOIN Production.Product p ON sod.ProductID = p.ProductID +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-28.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-28.sql new file mode 100644 index 0000000..85e2c3c --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-28.sql @@ -0,0 +1,13 @@ +--Listing 3-28. Query for Page I/O Latch Statistics in sys.dm_db_index_operational_stats +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name +,i.name as index_name +,page_io_latch_wait_count +,page_io_latch_wait_in_ms +,CAST(1. * page_io_latch_wait_in_ms + / NULLIF(page_io_latch_wait_count ,0) AS decimal(12,2)) AS page_io_avg_lock_wait_ms +FROM sys.dm_db_index_operational_stats (DB_ID(), NULL, NULL, NULL) ios +INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id +WHERE i.object_id = OBJECT_ID('Sales.SalesOrderHeader') +OR i.object_id = OBJECT_ID('Sales.SalesOrderDetail') +OR i.object_id = OBJECT_ID('Production.Product') +ORDER BY 5 DESC \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-29.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-29.sql new file mode 100644 index 0000000..903c2ea --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-29.sql @@ -0,0 +1,13 @@ +--Listing 3-29. T-SQL Script to Generate Page Latch Scenario +USE AdventureWorks2012 +GO +IF OBJECT_ID('dbo.PageLatchDemo') IS NOT NULL + DROP TABLE dbo.PageLatchDemo +GO +CREATE TABLE dbo.PageLatchDemo +( +PageLatchDemoID INT IDENTITY (1,1) +,FillerData bit +,CONSTRAINT PK_PageLatchDemo_PageLatchDemoID PRIMARY KEY CLUSTERED (PageLatchDemoID) +) +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-30.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-30.sql new file mode 100644 index 0000000..8ff9528 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-30.sql @@ -0,0 +1,5 @@ +--Listing 3-30. T-SQL Script to Generate Page Latch Load +INSERT INTO dbo.PageLatchDemo + (FillerData) +SELECT t.object_id % 2 +FROM sys.tables t \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-31.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-31.sql new file mode 100644 index 0000000..1f7d431 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-31.sql @@ -0,0 +1,11 @@ +--Listing 3-31. Query for Page Latch Statistics in sys.dm_db_index_operational_stats +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name +,i.name as index_name +,page_latch_wait_count +,page_latch_wait_in_ms +,CAST(100. * page_latch_wait_in_ms + / NULLIF(page_latch_wait_count ,0) AS decimal(12,2)) AS page_avg_lock_wait_ms +FROM sys.dm_db_index_operational_stats (DB_ID(), NULL, NULL, NULL) ios +INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id +WHERE i.object_id = OBJECT_ID('dbo.PageLatchDemo') +OR i.object_id = OBJECT_ID('dbo.PageLatchDemo') \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-32.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-32.sql new file mode 100644 index 0000000..6b8f24d --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-32.sql @@ -0,0 +1,25 @@ +--Listing 3-32. T-SQL Script to Generate Page Allocations +USE AdventureWorks2012 ; +GO +IF OBJECT_ID('dbo.AllocationCycle') IS NOT NULL + DROP TABLE dbo.AllocationCycle ; +GO +CREATE TABLE dbo.AllocationCycle +( +ID INT +,FillerData VARCHAR(1000) +,CreateDate DATETIME +,CONSTRAINT PK_AllocationCycle PRIMARY KEY CLUSTERED (ID) +) ; +WITH l0 AS ( + SELECT 0 AS C UNION ALL SELECT 0), + l1 AS (SELECT 0 AS C FROM l0 AS A CROSS JOIN l0 AS B), + l2 AS (SELECT 0 AS C FROM l1 AS A CROSS JOIN l1 AS B), + l3 AS (SELECT 0 AS C FROM l2 AS A CROSS JOIN l2 AS B), + l4 AS (SELECT 0 AS C FROM l3 AS A CROSS JOIN l3 AS B), + l5 AS (SELECT 0 AS C FROM l4 AS A CROSS JOIN l4 AS B), + nums AS (SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) AS n FROM l5) +INSERT INTO dbo.AllocationCycle +SELECT TOP (100000) n, NEWID(), GETDATE() +FROM nums +ORDER BY n ; \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-33.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-33.sql new file mode 100644 index 0000000..b1fcd87 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-33.sql @@ -0,0 +1,9 @@ +--Listing 3-33. Query for Page Latch Statistics in sys.dm_db_index_operational_stats +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name + ,i.name as index_name + ,ios.leaf_allocation_count + ,ios.nonleaf_allocation_count + ,ios.leaf_page_merge_count + ,ios.nonleaf_page_merge_count +FROM sys.dm_db_index_operational_stats(DB_ID(), OBJECT_ID('dbo.AllocationCycle'), NULL,NULL) ios + INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-34.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-34.sql new file mode 100644 index 0000000..be40ea2 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-34.sql @@ -0,0 +1,6 @@ +--Listing 3-34. T-SQL Script to Increase Page Allocations +USE AdventureWorks2012 ; +GO +UPDATE dbo.AllocationCycle +SET FillerData = REPLICATE('x',1000) +WHERE ID % 3 = 1 ; \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-35.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-35.sql new file mode 100644 index 0000000..1f271ba --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-35.sql @@ -0,0 +1,17 @@ +--Listing 3-35. T-SQL Script to Generate Page Latch Scenario +USE AdventureWorks2012 +GO +IF OBJECT_ID('dbo.PageCompression') IS NOT NULL + DROP TABLE dbo.PageCompression +GO +CREATE TABLE dbo.PageCompression( + ProductPhotoID int NOT NULL, + ThumbNailPhoto varbinary(max) NULL, + LargePhoto varbinary(max) NULL, + CONSTRAINT PK_PageCompression PRIMARY KEY CLUSTERED (ProductPhotoID)) + WITH (DATA_COMPRESSION = PAGE); +INSERT INTO dbo.PageCompression +SELECT ProductPhotoID + ,ThumbNailPhoto + ,LargePhoto +FROM Production.ProductPhoto \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-36.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-36.sql new file mode 100644 index 0000000..10c1f37 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-36.sql @@ -0,0 +1,7 @@ +--Listing 3-36. Query for Page Compression in sys.dm_db_index_operational_stats +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name +,i.name as index_name +,page_compression_attempt_count +,page_compression_success_count +FROM sys.dm_db_index_operational_stats (DB_ID(), OBJECT_ID('dbo.PageCompression'), NULL, NULL) ios + INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-37.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-37.sql new file mode 100644 index 0000000..a7a73fc --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-37.sql @@ -0,0 +1,17 @@ +--Listing 3-37. T-SQL Script to Generate LOB Scenario +IF OBJECT_ID('dbo.LOBAccess') IS NOT NULL + DROP TABLE dbo.LOBAccess +GO +CREATE TABLE dbo.LOBAccess + ( + ID INT IDENTITY(1,1) PRIMARY KEY CLUSTERED + ,LOBValue VARCHAR(MAX) + ,FillerData CHAR(2000) DEFAULT(REPLICATE('X',2000)) + ,FillerDate DATETIME DEFAULT(GETDATE()) + ) +INSERT INTO dbo.LOBAccess (LOBValue) +SELECT TOP 10 'Short Value' +FROM Production.ProductPhoto +UPDATE dbo.LOBAccess +SET LOBValue = REPLICATE('Long Value',8000) +SELECT * FROM dbo.LOBAccess \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-38.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-38.sql new file mode 100644 index 0000000..61267b6 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-38.sql @@ -0,0 +1,13 @@ +--Listing 3-38. Query for LOB Statistics in sys.dm_db_index_operational_stats +SELECT OBJECT_SCHEMA_NAME(ios.object_id) + '.' + OBJECT_NAME(ios.object_id) as table_name + ,i.name as index_name + ,lob_fetch_in_pages + ,lob_fetch_in_bytes + ,lob_orphan_create_count + ,lob_orphan_insert_count + ,row_over?ow_fetch_in_pages + ,row_over?ow_fetch_in_bytes + ,column_value_push_off_row_count + ,column_value_pull_in_row_count +FROM sys.dm_db_index_operational_stats (DB_ID(), OBJECT_ID('dbo.LOBAccess'), NULL, NULL) ios +INNER JOIN sys.indexes i ON i.object_id = ios.object_id AND i.index_id = ios.index_id \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-39.sql b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-39.sql new file mode 100644 index 0000000..8389b97 --- /dev/null +++ b/Performance Indexing - Chapter 03/Chapter 03 - Listing 3-39.sql @@ -0,0 +1,8 @@ +--Listing 3-39. Parameters for sys.dm_db_index_physical_stats +sys.dm_db_index_physical_stats ( + { database_id | NULL | 0 | DEFAULT } + , { object_id | NULL | 0 | DEFAULT } + , { index_id | NULL | 0 | -1 | DEFAULT } + , { partition_number | NULL | 0 | DEFAULT } + , { mode | NULL | DEFAULT } +) \ No newline at end of file diff --git a/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssms_suo b/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..26ae7651f23b3e384e76c7d21089e3aa88bbd6b0 GIT binary patch literal 42496 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 literal 0 HcmV?d00001 diff --git a/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssln b/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssln new file mode 100644 index 0000000..6a923c1 --- /dev/null +++ b/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# SQL Server Management Studio Solution File, Format Version 11.00 +Project("{4F2E2C19-372F-40D8-9FA7-9D2138C6997A}") = "Performance Indexing - Chapter 03", "Performance Indexing - Chapter 03.ssmssqlproj", "{015B50B9-6FC4-468B-9666-EEB9A5BCCD1B}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Default|Default = Default|Default + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {015B50B9-6FC4-468B-9666-EEB9A5BCCD1B}.Default|Default.ActiveCfg = Default + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssqlproj b/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssqlproj new file mode 100644 index 0000000..18db780 --- /dev/null +++ b/Performance Indexing - Chapter 03/Performance Indexing - Chapter 03.ssmssqlproj @@ -0,0 +1,262 @@ + + + + + + + 2013-06-13T11:10:37.6686695-04:00 + SQL + FL-WS-CON-JS01 + + Windows Authentication + + 15 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-01.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-02.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-03.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-04.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-05.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-06.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-07.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-08.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-09.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-10.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-11.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-12.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-13.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-14.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-15.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-16.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-17.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-18.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-19.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-20.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-21.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-22.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-23.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-24.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-25.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-26.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-27.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-28.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-29.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-30.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-31.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-32.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-33.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-34.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-35.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-36.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-37.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-38.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 03 - Listing 3-39.sql + + + + + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-01.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-01.sql new file mode 100644 index 0000000..5b1bbc1 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-01.sql @@ -0,0 +1,17 @@ +--Listing 4-1. An Example of Well-formed XML + + + + + 1.32 + .97 + + + + + 2.99 + .40 + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-02.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-02.sql new file mode 100644 index 0000000..8e3d36b --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-02.sql @@ -0,0 +1,34 @@ +--Listing 4-2. CREATE SCHEMA COLLECTION Used to Create Typed XML +CREATE XML SCHEMA COLLECTION CheckoutCouponSchema AS ' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +' +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-03.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-03.sql new file mode 100644 index 0000000..06de001 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-03.sql @@ -0,0 +1,8 @@ +--Listing 4-3. Creating a Table and Specifying a Schema Collection on XML Columns +CREATE TABLE [dbo].[XMLTable]( + [XMLValue] [xml](CONTENT [dbo].[CheckoutCouponSchema]) NULL, + [TransID] [bigint] IDENTITY(1,1) NOT NULL, +PRIMARY KEY CLUSTERED +( + [TransID] ASC +)) \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-04.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-04.sql new file mode 100644 index 0000000..bf53ae0 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-04.sql @@ -0,0 +1,19 @@ +--Listing 4-4. Inserting XML into a SQL Server Table and XML Column +DECLARE @XML XML +SET @XML = ' + + + + 1.32 + .97 + + + + + 2.99 + .40 + + + +' +INSERT INTO XMLTable VALUES (@XML) \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-05.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-05.sql new file mode 100644 index 0000000..a7fdd51 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-05.sql @@ -0,0 +1,9 @@ +--Listing 4-5. Querying XML Data with the exist() Method +SELECT +XMLValue.value('(/CheckoutItem/TotalSales/Product/ItemSale/NetPrice)[1]','varchar(max)') + AS [Net Price], +XMLValue.value('(/CheckoutItem/TotalSales/Product/ItemSale/CouponPrice)[1]','varchar(max)') + AS [Coupon Savings] +FROM XMLTable +WHERE + XMLValue.exist('//TotalSales/Product/@ProdID[.="468"]') = 1 \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-06.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-06.sql new file mode 100644 index 0000000..d324676 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-06.sql @@ -0,0 +1,17 @@ +--Listing 4-6. Creating a Database to Hold Geometry-related Data +CREATE TABLE [dbo].[AREAZIP]( + [ident] [int] IDENTITY(1,1) NOT NULL, + [AREA] [real] NULL, + [PERIMETER] [real] NULL, + [ZT55_D00_] [bigint] NULL, + [ZT55_D00_I] [bigint] NULL, + [ZCTA] [nvarchar](255) NULL, + [NAME] [nvarchar](255) NULL, + [LSAD] [nvarchar](255) NULL, + [LSAD_TRANS] [nvarchar](255) NULL, + [geom] [geometry] NULL, + CONSTRAINT [PK_AREAZIP] PRIMARY KEY CLUSTERED +( + [ident] ASC +)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +) ON [PRIMARY] \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-07.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-07.sql new file mode 100644 index 0000000..2dd74b9 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-07.sql @@ -0,0 +1,3 @@ +--Listing 4-7. Using MakeValid() to Correct any Invalid Geometry Instances +UPDATE AREAZIP +SET GEOM = GEOM.MakeValid() \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-08.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-08.sql new file mode 100644 index 0000000..01a6b3b --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-08.sql @@ -0,0 +1,5 @@ +--Listing 4-8. Query for the Top Ten Closest ZIP Codes to a Given Point +Declare @point geometry = geometry::STGeomFromText('POINT(-87.819473 42.55022)', 0) +SELECT TOP 10 geom FROM zt55_d00 +WHERE geom.MakeValid().STDistance(@point) IS NOT NULL AND geom.MakeValid().STDistance(@point) < 1 +ORDER BY geom.MakeValid().STDistance(@point); \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-09.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-09.sql new file mode 100644 index 0000000..01d2038 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-09.sql @@ -0,0 +1,9 @@ +--Listing 4-9. Create Statement for a Spatial Index +CREATE SPATIAL INDEX IDX_WIZIP_GEOM ON [dbo].[AREAZIP] +( + [geom] +)USING GEOMETRY_GRID +WITH ( +BOUNDING_BOX =(-91.513079, -87.496494, 36.970298, 36.970298), GRIDS =(LEVEL_1 = LOW,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = HIGH), +CELLS_PER_OBJECT = 16, PAD_INDEX = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-10.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-10.sql new file mode 100644 index 0000000..c905bb5 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-10.sql @@ -0,0 +1,11 @@ +--Listing 4-10. Table and INSERT Statements Used with Full-Text Search +CREATE TABLE SQLServerDocuments (ID INT IDENTITY(1,1) PRIMARY KEY, DocType VARCHAR(6), DOC +VARBINARY(MAX)) +GO +DECLARE @worddoc VARBINARY(MAX) +SELECT @worddoc = CAST(bulkcolumn AS VARBINARY(MAX)) +FROM OPENROWSET( BULK 'C:\High Availability with SQL Server 2008.doc', SINGLE_BLOB ) AS x + +INSERT INTO SQLServerDocuments (DocType,DOC) +VALUES ('doc',@worddoc) +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-11.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-11.sql new file mode 100644 index 0000000..fb370f6 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-11.sql @@ -0,0 +1,6 @@ +--Listing 4-11. The Create Full-Text Catalog Syntax +CREATE FULLTEXT CATALOG +WITH +AS DEFAULT +AUTHORIZATION +ACCENT_SENSITIVITY = \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-12.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-12.sql new file mode 100644 index 0000000..1d8071c --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-12.sql @@ -0,0 +1,8 @@ +--Listing 4-12. Create Full-Text Index Syntax +CREATE FULLTEXT INDEX ON +() +KEY INDEX +ON +WITH +CHANGE_TRACKING = +STOPLIST = \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-13.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-13.sql new file mode 100644 index 0000000..4a8a245 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-13.sql @@ -0,0 +1,10 @@ +--Listing 4-13. Using sys.fulltext_stoplists to Review StopList Words +SELECT + lists.stoplist_id, + [name], + stopword +FROM +sys.fulltext_stoplists lists +JOIN sys.fulltext_stopwords words on lists.stoplist_id = words.stoplist_id +WHERE words.[language] = 'English' +ORDER BY lists.[name] \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-14.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-14.sql new file mode 100644 index 0000000..c4604c2 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-14.sql @@ -0,0 +1,11 @@ +--Listing 4-14. CREATE FULL TEXT INDEX Statement +CREATE FULLTEXT INDEX ON dbo. +SQLServerDocuments + ( + DOC + TYPE COLUMN DocType + ) + KEY INDEX [PK__SQLServe__3214EC2769F9A9EA] + ON WhitePaperCatalog + WITH STOPLIST = WhitePaperStopList; +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-15.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-15.sql new file mode 100644 index 0000000..5ace0cb --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-15.sql @@ -0,0 +1,5 @@ +--Listing 4-15. Using CONTAINS to Query for a Speci?c Word +SELECT + DOC, DocType +FROM SQLServerDocuments +WHERE CONTAINS(DOC, 'replication') \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-16.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-16.sql new file mode 100644 index 0000000..4d1e0cd --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-16.sql @@ -0,0 +1,2 @@ +--Listing 4-16. FULLTEXTCATALOGPROPERTY to Return Population Status of a Catalog +SELECT FULLTEXTCATALOGPROPERTY('WhitePaperCatalog','PopulateStatus') \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-17.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-17.sql new file mode 100644 index 0000000..b51bc03 --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-17.sql @@ -0,0 +1,6 @@ +--Listing 4-17. Utilizing sys.fulltext_index_catalog_usages +SELECT + OBJECT_NAME(object_id) [Object Name], + index_id, + fulltext_catalog_id +FROM sys.fulltext_index_catalog_usages \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-18.sql b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-18.sql new file mode 100644 index 0000000..0fb643c --- /dev/null +++ b/Performance Indexing - Chapter 04/Chapter 04 - Listing 4-18.sql @@ -0,0 +1,15 @@ +--Listing 4-18. Using all the Catalog Views for Full-Text Index Information +SELECT + idx.is_enabled, + idx.change_tracking_state, + idx.crawl_type_desc, + idx.crawl_end_date [Last Crawl], + cat.[name], + CASE WHEN cat.is_accent_sensitivity_on = 0 THEN 'Accent InSensitive' + WHEN cat.is_accent_sensitivity_on = 1 THEN 'Accent Sensitive' + END [Accent Sensitivity], + lists.[name], + lists.modify_date [Last Modi?ed Date of StopList] +FROM sys.fulltext_indexes idx +JOIN sys.fulltext_catalogs cat on idx.fulltext_catalog_id = cat.fulltext_catalog_id +JOIN sys.fulltext_stoplists lists on idx.stoplist_id = lists.stoplist_id \ No newline at end of file diff --git a/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssms_suo b/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..40cb2c1ef7ed2de760df0baee6c0ec949005e6c7 GIT binary patch literal 27648 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 y{I2{LV}pM2y73*RE literal 0 HcmV?d00001 diff --git a/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssln b/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssln new file mode 100644 index 0000000..ccd5a6d --- /dev/null +++ b/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 11.00 +# SQL Server Management Studio Solution File, Format Version 11.00 +Project("{4F2E2C19-372F-40D8-9FA7-9D2138C6997A}") = "Performance Indexing - Chapter 04", "Performance Indexing - Chapter 04.ssmssqlproj", "{9B38C4FF-F490-4D07-8047-898B911F20C0}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Default|Default = Default|Default + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {9B38C4FF-F490-4D07-8047-898B911F20C0}.Default|Default.ActiveCfg = Default + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssqlproj b/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssqlproj new file mode 100644 index 0000000..2c9cb7a --- /dev/null +++ b/Performance Indexing - Chapter 04/Performance Indexing - Chapter 04.ssmssqlproj @@ -0,0 +1,136 @@ + + + + + + + 2013-06-13T11:34:23.2912104-04:00 + SQL + FL-WS-CON-JS01 + + Windows Authentication + + 15 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-01.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-02.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-03.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-04.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-05.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-06.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-07.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-08.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-09.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-10.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-11.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-12.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-13.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-14.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-15.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-16.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-17.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 04 - Listing 4-18.sql + + + + + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-01.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-01.sql new file mode 100644 index 0000000..7892042 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-01.sql @@ -0,0 +1,14 @@ +--Listing 5-1. Table with No Index +SELECT * INTO MythOne +FROM Sales.SalesOrderDetail +GO +SET STATISTICS IO ON +SET NOCOUNT ON +GO +SELECT SalesOrderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty, ProductID, +SpecialOfferID, UnitPrice, UnitPriceDiscount, LineTotal +FROM MythOne +WHERE CarrierTrackingNumber = '4911-403C-98' +GO +SET STATISTICS IO OFF +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-02.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-02.sql new file mode 100644 index 0000000..3b182a4 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-02.sql @@ -0,0 +1,3 @@ +--Listing 5-2. I/O Statistics for Table with No Index +Table 'MythOne'. Scan count 1, logical reads 1494, physical reads 0, read-ahead reads 0, lob +logical reads 0, lob physical reads 0, lob read-ahead reads 0. \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-03.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-03.sql new file mode 100644 index 0000000..0ababf7 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-03.sql @@ -0,0 +1,13 @@ +--Listing 5-3. Adding an Index to MythOne +CREATE INDEX IX_CarrierTrackingNumber ON MythOne (CarrierTrackingNumber) +GO +SET STATISTICS IO ON +SET NOCOUNT ON +GO +SELECT SalesOrderID, SalesOrderDetailID, CarrierTrackingNumber, OrderQty, ProductID, +SpecialOfferID, UnitPrice, UnitPriceDiscount, LineTotal +FROM MythOne +WHERE CarrierTrackingNumber = '4911-403C-98' +GO +SET STATISTICS IO OFF +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-04.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-04.sql new file mode 100644 index 0000000..3d0c592 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-04.sql @@ -0,0 +1,3 @@ +--Listing 5-4. I/O Statistics for Table with an Index +Table 'MythOne'. Scan count 1, logical reads 15, physical reads 0, read-ahead reads 0, +lob logical reads 0, lob physical reads 0, lob read-ahead reads 0. \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-05.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-05.sql new file mode 100644 index 0000000..3ad3667 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-05.sql @@ -0,0 +1,29 @@ +--Listing 5-5. Two Ways to Create PRIMARY KEYS +CREATE TABLE dbo.MythTwo1 + ( + RowID int NOT NULL + ,Column1 nvarchar(128) + ,Column2 nvarchar(128) + ) +ALTER TABLE dbo.MythTwo1 +ADD CONSTRAINT PK_MythTwo1 PRIMARY KEY (RowID) +GO +CREATE TABLE dbo.MythTwo2 + ( + RowID int NOT NULL + ,Column1 nvarchar(128) + ,Column2 nvarchar(128) + ) +CREATE CLUSTERED INDEX CL_MythTwo2 ON dbo.MythTwo2 (RowID) +ALTER TABLE dbo.MythTwo2 +ADD CONSTRAINT PK_MythTwo2 PRIMARY KEY (RowID) +GO +SELECT OBJECT_NAME(object_id) AS table_name + ,name + ,index_id + ,type + ,type_desc + ,is_unique + ,is_primary_key +FROM sys.indexes +WHERE object_id IN (OBJECT_ID('dbo.MythTwo1'),OBJECT_ID('dbo.MythTwo2')) \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-06.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-06.sql new file mode 100644 index 0000000..10cda13 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-06.sql @@ -0,0 +1,20 @@ +--Listing 5-6. Online Index to Build Myth Script +CREATE TABLE dbo.MythThree + ( + RowID int NOT NULL + ,Column1 uniqueidenti?er + ); +WITH L1(z) AS (SELECT 0 UNION ALL SELECT 0) +, L2(z) AS (SELECT 0 FROM L1 a CROSS JOIN L1 b) +, L3(z) AS (SELECT 0 FROM L2 a CROSS JOIN L2 b) +, L4(z) AS (SELECT 0 FROM L3 a CROSS JOIN L3 b) +, L5(z) AS (SELECT 0 FROM L4 a CROSS JOIN L4 b) +, L6(z) AS (SELECT TOP 10000000 0 FROM L5 a CROSS JOIN L5 b) +INSERT INTO dbo.MythThree +SELECT ROW_NUMBER() OVER (ORDER BY z) AS RowID, NEWID() +FROM L6; +GO +CREATE INDEX IX_MythThree_ONLINE ON MythThree (Column1) WITH (ONLINE = ON); +GO +CREATE INDEX IX_MythThree ON MythThree (Column1); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-07.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-07.sql new file mode 100644 index 0000000..eedf9b0 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-07.sql @@ -0,0 +1,8 @@ +--Listing 5-7. Extended Event Session for Lock Acquired and Released +CREATE EVENT SESSION [MythThree] ON SERVER +ADD EVENT sqlserver.lock_acquired(SET collect_database_name=(1) + WHERE ([sqlserver].[session_id]=(66))), +ADD EVENT sqlserver.lock_released( + WHERE ([sqlserver].[session_id]=(66))) +ADD TARGET package0.ring_buffer +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-08.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-08.sql new file mode 100644 index 0000000..d6a0834 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-08.sql @@ -0,0 +1,7 @@ +--Listing 5-8. Multicolumn Index Myth +SELECT SalesOrderID, OrderDate, DueDate, ShipDate +INTO dbo.MythFour +FROM Sales.SalesOrderHeader; +ALTER TABLE dbo.MythFour +ADD CONSTRAINT PK_MythFour PRIMARY KEY CLUSTERED (SalesOrderID); +CREATE NONCLUSTERED INDEX IX_MythFour ON dbo.MythFour (OrderDate, DueDate, ShipDate); \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-09.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-09.sql new file mode 100644 index 0000000..7c026c0 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-09.sql @@ -0,0 +1,3 @@ +--Listing 5-9. Query Using Left-most Column in Index +SELECT OrderDate FROM dbo.MythFour +WHERE OrderDate = '2001-07-17 00:00:00.000' \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-10.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-10.sql new file mode 100644 index 0000000..0bd2c01 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-10.sql @@ -0,0 +1,3 @@ +--Listing 5-10. Query Using Right-most Column in Index +SELECT ShipDate FROM dbo.MythFour +WHERE ShipDate = '2001-07-17 00:00:00.000' \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-11.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-11.sql new file mode 100644 index 0000000..ece5cef --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-11.sql @@ -0,0 +1,3 @@ +--Listing 5-11. Query Using Middle Column in Index +SELECT DueDate FROM dbo.MythFour +WHERE DueDate = '2001-07-17 00:00:00.000' \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-12.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-12.sql new file mode 100644 index 0000000..8b0f53f --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-12.sql @@ -0,0 +1,12 @@ +--Listing 5-12. Create and Populate Myth Five Table +CREATE TABLE dbo.MythFive +( +RowID int PRIMARY KEY CLUSTERED +,TestValue varchar(20) NOT NULL +); +INSERT INTO dbo.MythFive (RowID, TestValue) VALUES (1, 'FirstRecordAdded'); +INSERT INTO dbo.MythFive (RowID, TestValue) VALUES (3, 'SecondRecordAdded'); +INSERT INTO dbo.MythFive (RowID, TestValue) VALUES (2, 'ThirdRecordAdded'); +GO +DBCC IND ('AdventureWorks2008R2', 'dbo.MythFive', 1); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-13.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-13.sql new file mode 100644 index 0000000..ec502df --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-13.sql @@ -0,0 +1,5 @@ +--Listing 5-13. Create and Populate Myth Five Table +DBCC TRACEON (3604); +GO +DBCC PAGE (AdventureWorks, 1, 140107, 2); +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-14.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-14.sql new file mode 100644 index 0000000..8afd198 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-14.sql @@ -0,0 +1,21 @@ +--Listing 5-14. Create and Populate Myth Six Table +CREATE TABLE dbo.MythSix + ( + RowID int NOT NULL + ,Column1 varchar(500) + ); +ALTER TABLE dbo.MythSix ADD CONSTRAINT + PK_MythSix PRIMARY KEY CLUSTERED (RowID) WITH(FILLFACTOR = 50) +WITH L1(z) AS (SELECT 0 UNION ALL SELECT 0) +, L2(z) AS (SELECT 0 FROM L1 a CROSS JOIN L1 b) +, L3(z) AS (SELECT 0 FROM L2 a CROSS JOIN L2 b) +, L4(z) AS (SELECT 0 FROM L3 a CROSS JOIN L3 b) +, L5(z) AS (SELECT 0 FROM L4 a CROSS JOIN L4 b) +, L6(z) AS (SELECT TOP 1000 0 FROM L5 a CROSS JOIN L5 b) +INSERT INTO dbo.MythSix + +SELECT ROW_NUMBER() OVER (ORDER BY z) AS RowID, REPLICATE('X', 500) +FROM L6 +SELECT object_id, index_id, avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.MythSix'),NULL,NULL,'DETAILED') +WHERE index_level = 0 \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-15.sql b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-15.sql new file mode 100644 index 0000000..ab20059 --- /dev/null +++ b/Performance Indexing - Chapter 05/Chapter 05 - Listing 5-15.sql @@ -0,0 +1,5 @@ +--Listing 5-15. Rebuild Clustered Index on Myth Six Table +ALTER INDEX PK_MythSix ON dbo.MythSix REBUILD +SELECT object_id, index_id, avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.MythSix'),NULL,NULL,'DETAILED') +WHERE index_level = 0 \ No newline at end of file diff --git a/Performance Indexing - Chapter 05/Performance Indexing - Chapter 05.ssms_suo b/Performance Indexing - Chapter 05/Performance Indexing - Chapter 05.ssms_suo new file mode 100644 index 0000000000000000000000000000000000000000..c959c7e359a3c55ab95ac9cd492a6f3e23817cc8 GIT binary patch literal 26624 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 + + + + + + 2013-06-13T17:57:19.2117333-04:00 + SQL + FL-WS-CON-JS01 + + Windows Authentication + + 15 + 0 + NotSpecified + Microsoft SQL Server Management Studio - Query + + + + + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-01.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-02.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-03.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-04.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-05.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-06.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-07.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-08.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-09.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-10.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-11.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-12.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-13.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-14.sql + + + 8c91a03d-f9b4-46c0-a305-b5dcc79ff907:FL-WS-CON-JS01:True + FL-WS-CON-JS01 + + Chapter 05 - Listing 5-15.sql + + + + + + + + \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-01.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-01.sql new file mode 100644 index 0000000..e2cfbc3 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-01.sql @@ -0,0 +1,13 @@ +--Listing 6-1. Populate Uniqueidenti?er Table +IF OBJECT_ID('dbo.UsingUniqueidenti?er') IS NOT NULL + DROP TABLE dbo.UsingUniqueidenti?er; +CREATE TABLE dbo.UsingUniqueidenti?er +( +RowID uniqueidenti?er CONSTRAINT DF_GUIDValue DEFAULT NEWID() +,Name sysname +,JunkValue varchar(2000) +); +INSERT INTO dbo.UsingUniqueidenti?er (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +CREATE CLUSTERED INDEX CLUS_UsingUniqueidenti?er ON dbo.UsingUniqueidenti?er(RowID); \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-02.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-02.sql new file mode 100644 index 0000000..58afbbe --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-02.sql @@ -0,0 +1,11 @@ +--Listing 6-2. View INSERT Index Fragmentation +SELECT index_type_desc + ,index_depth + ,index_level + ,page_count + ,record_count + ,CAST(avg_fragmentation_in_percent as DECIMAL(6,2)) as avg_fragmentation_in_percent + ,fragment_count + ,avg_fragment_size_in_pages + ,CAST(avg_page_space_used_in_percent as DECIMAL(6,2)) as avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.UsingUniqueidenti?er'),NULL,NULL,'DETAILED') \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-03.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-03.sql new file mode 100644 index 0000000..8e5ddfb --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-03.sql @@ -0,0 +1,4 @@ +--Listing 6-3. INSERT into Uniqueidenti?er Table +INSERT INTO dbo.UsingUniqueidenti?er (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.objects \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-04.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-04.sql new file mode 100644 index 0000000..459e8b0 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-04.sql @@ -0,0 +1,2 @@ +--Listing 6-4. Create Non-Clustered Index +CREATE NONCLUSTERED INDEX IX_Name ON dbo.UsingUniqueidenti?er(Name) INCLUDE (JunkValue); \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-05.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-05.sql new file mode 100644 index 0000000..f406055 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-05.sql @@ -0,0 +1,11 @@ +--Listing 6-5. View UPDATE Index Fragmentation +SELECT index_type_desc + ,index_depth + ,index_level + ,page_count + ,record_count + ,CAST(avg_fragmentation_in_percent as DECIMAL(6,2)) as avg_fragmentation_in_percent + ,fragment_count + ,avg_fragment_size_in_pages + ,CAST(avg_page_space_used_in_percent as DECIMAL(6,2)) as avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.UpdateOperations'),NULL,NULL,'DETAILED') \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-06.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-06.sql new file mode 100644 index 0000000..54c327d --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-06.sql @@ -0,0 +1,13 @@ +--Listing 6-6. CreateTable for UPDATE Operations +IF OBJECT_ID('dbo.UpdateOperations') IS NOT NULL + DROP TABLE dbo.UpdateOperations; +CREATE TABLE dbo.UpdateOperations +( +RowID int IDENTITY(1,1) +,Name sysname +,JunkValue varchar(2000) +); +INSERT INTO dbo.UpdateOperations (Name, JunkValue) +SELECT name, REPLICATE('X', 1000) +FROM sys.columns +CREATE CLUSTERED INDEX CLUS_UsingUniqueidenti?er ON dbo.UpdateOperations(RowID); \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-07.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-07.sql new file mode 100644 index 0000000..2ef751d --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-07.sql @@ -0,0 +1,4 @@ +--Listing 6-7. Create Table for UPDATE Operations +UPDATE dbo.UpdateOperations +SET JunkValue = REPLICATE('X', 2000) +WHERE RowID % 5 = 1 \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-08.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-08.sql new file mode 100644 index 0000000..b7729ba --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-08.sql @@ -0,0 +1,2 @@ +--Listing 6-8. Create Non-clustered Index for UPDATE operations +CREATE NONCLUSTERED INDEX IX_Name ON dbo.UpdateOperations(Name) INCLUDE (JunkValue); \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-09.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-09.sql new file mode 100644 index 0000000..433f7d3 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-09.sql @@ -0,0 +1,4 @@ +--Listing 6-9. UPDATE Operation to Change Index Key Value +UPDATE dbo.UpdateOperations +SET Name = REVERSE(Name) +WHERE RowID % 9 = 1 \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-10.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-10.sql new file mode 100644 index 0000000..be5aac6 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-10.sql @@ -0,0 +1,12 @@ +--Listing 6-10. View DELETE Index Fragmentation +SELECT index_type_desc + ,index_depth + ,index_level + ,page_count + ,record_count + ,CAST(avg_fragmentation_in_percent as DECIMAL(6,2)) as avg_fragmentation_in_percent + ,fragment_count + ,avg_fragment_size_in_pages + ,CAST(avg_page_space_used_in_percent as DECIMAL(6,2)) as avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.DeleteOperations'), +NULL,NULL,'DETAILED') \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-11.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-11.sql new file mode 100644 index 0000000..e7390f7 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-11.sql @@ -0,0 +1,13 @@ +--Listing 6-11. Creating a Table for DELETE Operation +IF OBJECT_ID('dbo.DeleteOperations') IS NOT NULL + DROP TABLE dbo.DeleteOperations; +CREATE TABLE dbo.DeleteOperations +( +RowID int IDENTITY(1,1) +,Name sysname +,JunkValue varchar(2000) +); +INSERT INTO dbo.DeleteOperations (Name, JunkValue) +SELECT name, REPLICATE('X', 1000) +FROM sys.columns +CREATE CLUSTERED INDEX CLUS_UsingUniqueidenti?er ON dbo.DeleteOperations(RowID); \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-12.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-12.sql new file mode 100644 index 0000000..eccb9a5 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-12.sql @@ -0,0 +1,3 @@ +--Listing 6-12. Performing DELETE Operation +DELETE dbo.DeleteOperations +WHERE RowID % 100 BETWEEN 1 AND 50 \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-13.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-13.sql new file mode 100644 index 0000000..a953067 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-13.sql @@ -0,0 +1,11 @@ +--Listing 6-13. View Index Fragmentation from Shrink +SELECT index_type_desc + ,index_depth + ,index_level + ,page_count + ,record_count + ,CAST(avg_fragmentation_in_percent as DECIMAL(6,2)) as avg_fragmentation_in_percent + ,fragment_count + ,avg_fragment_size_in_pages + ,CAST(avg_page_space_used_in_percent as DECIMAL(6,2)) as avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.FirstTable'),NULL,NULL,'DETAILED') \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-14.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-14.sql new file mode 100644 index 0000000..f69d517 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-14.sql @@ -0,0 +1,49 @@ +--Listing 6-14. Shrink Operation Database Preparation +USE master +GO +DROP DATABASE Fragmentation +GO +CREATE DATABASE Fragmentation +GO +Use Fragmentation +GO +IF OBJECT_ID('dbo.FirstTable') IS NOT NULL + DROP TABLE dbo.FirstTable; +CREATE TABLE dbo.FirstTable +( +RowID int IDENTITY(1,1) +,Name sysname +,JunkValue varchar(2000) +,CONSTRAINT PK_FirstTable PRIMARY KEY CLUSTERED (RowID) +); +INSERT INTO dbo.FirstTable (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +IF OBJECT_ID('dbo.SecondTable') IS NOT NULL + DROP TABLE dbo.SecondTable; +CREATE TABLE dbo.SecondTable +( +RowID int IDENTITY(1,1) +,Name sysname +,JunkValue varchar(2000) +,CONSTRAINT PK_SecondTable PRIMARY KEY CLUSTERED (RowID) +); +INSERT INTO dbo.SecondTable (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +GO +INSERT INTO dbo.FirstTable (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +GO +INSERT INTO dbo.SecondTable (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +GO +INSERT INTO dbo.FirstTable (Name, JunkValue) +SELECT name, REPLICATE('X', 2000) +FROM sys.columns +GO +IF OBJECT_ID('dbo.SecondTable') IS NOT NULL + DROP TABLE dbo.SecondTable; +GO \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-15.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-15.sql new file mode 100644 index 0000000..3ed1465 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-15.sql @@ -0,0 +1,2 @@ +--Listing 6-15. Shrink Operation +DBCC SHRINKDATABASE (Fragmentation) \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-16.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-16.sql new file mode 100644 index 0000000..96e3a7d --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-16.sql @@ -0,0 +1,11 @@ +--Listing 6-16. View Index Fragmentation for I/O Example +SELECT index_type_desc + ,index_depth + ,index_level + ,page_count + ,record_count + ,CAST(avg_fragmentation_in_percent as DECIMAL(6,2)) as avg_fragmentation_in_percent + ,fragment_count + ,avg_fragment_size_in_pages + ,CAST(avg_page_space_used_in_percent as DECIMAL(6,2)) as avg_page_space_used_in_percent +FROM sys.dm_db_index_physical_stats(DB_ID(),OBJECT_ID('dbo.IndexIO),NULL,NULL,'DETAILED') \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-17.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-17.sql new file mode 100644 index 0000000..69a8c0d --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-17.sql @@ -0,0 +1,25 @@ +--Listing 6-17. Script to Build Index I/O Example +IF OBJECT_ID('dbo.IndexIO') IS NOT NULL + DROP TABLE dbo.IndexIO; +CREATE TABLE dbo.IndexIO +( +RowID int IDENTITY(1,1) +,Name sysname +,JunkValue varchar(2000) +); +INSERT INTO dbo.IndexIO (Name, JunkValue) +SELECT name, REPLICATE('X', 1000) +FROM sys.columns +CREATE CLUSTERED INDEX CLUS_IndexIO ON dbo.IndexIO(RowID); +UPDATE dbo.IndexIO +SET JunkValue = REPLICATE('X', 2000) +WHERE RowID % 5 = 1 +SELECT i.name, ps.in_row_reserved_page_count +FROM sys.indexes i +INNER JOIN sys.dm_db_partition_stats ps ON i.object_id = ps.object_id AND i.index_id = ps.index_id +WHERE i.name = 'CLUS_IndexIO' +ALTER INDEX CLUS_IndexIO ON dbo.IndexIO REBUILD +SELECT i.name, ps.in_row_reserved_page_count +FROM sys.indexes i +INNER JOIN sys.dm_db_partition_stats ps ON i.object_id = ps.object_id AND i.index_id = ps.index_id +WHERE i.name = 'CLUS_IndexIO' \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-18.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-18.sql new file mode 100644 index 0000000..28dc8e9 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-18.sql @@ -0,0 +1,7 @@ +--Listing 6-18. Script to Rebuild Index to Remove Fragmentation +ALTER INDEX CLUS_IndexIO ON dbo.IndexIO REBUILD + +SELECT i.name, ps.in_row_reserved_page_count +FROM sys.indexes i +INNER JOIN sys.dm_db_partition_stats ps ON i.object_id = ps.object_id AND i.index_id = ps.index_id +WHERE i.name = 'CLUS_IndexIO' \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-19.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-19.sql new file mode 100644 index 0000000..c884f66 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-19.sql @@ -0,0 +1,15 @@ +--Listing 6-19. Index Rebuild with CREATE INDEX +CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ] INDEX index_name + ON ( column [ ASC | DESC ] [ ,…n ] ) + [ INCLUDE ( column_name [ ,…n ] ) ] + [ WHERE ] + [ WITH ( [ ,…n ] ) ] + [ ON { partition_scheme_name ( column_name ) + | ?legroup_name + | default + } + ] + [ FILESTREAM_ON { ?lestream_?legroup_name | partition_scheme_name | “NULL” } ] +[ ; ] + ::= + DROP_EXISTING = { ON | OFF } \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-20.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-20.sql new file mode 100644 index 0000000..0d4c86e --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-20.sql @@ -0,0 +1,12 @@ +--Listing 6-20. Index Rebuild with ALTER INDEX +ALTER INDEX { index_name | ALL } + ON + { REBUILD + [ [PARTITION = ALL] + [ WITH ( [ ,…n ] ) ] + | [ PARTITION = partition_number + [ WITH ( + [ ,…n ] ) + ] + ] + ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-21.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-21.sql new file mode 100644 index 0000000..34f4594 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-21.sql @@ -0,0 +1,6 @@ +--Listing 6-21. Index Reorganization with ALTER INDEX +ALTER INDEX { index_name | ALL } + ON + | REORGANIZE + [ PARTITION = partition_number ] + [ WITH ( LOB_COMPACTION = { ON | OFF } ) ] \ No newline at end of file diff --git a/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-22.sql b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-22.sql new file mode 100644 index 0000000..54077c2 --- /dev/null +++ b/Performance Indexing - Chapter 06/Chapter 06 - Listing 6-22.sql @@ -0,0 +1,35 @@ +--Listing 6-22. Index Defragmantion Script Template +DECLARE @MaxFragmentation TINYINT=30 +,@MinimumPages SMALLINT=1000 +,@SQL nvarchar(max) +,@ObjectName NVARCHAR(300) +,@IndexName NVARCHAR(300) +,@CurrentFragmentation DECIMAL(9, 6) +DECLARE @FragmentationState TABLE +( +SchemaName SYSNAME +,TableName SYSNAME +,object_id INT +,IndexName SYSNAME +,index_id INT +,page_count BIGINT +,avg_fragmentation_in_percent FLOAT +,avg_page_space_used_in_percent FLOAT +,type_desc VARCHAR(255) +) +INSERT INTO @FragmentationState +