Skip to content

Commit

Permalink
Merge pull request #477 from erikdarlingdata/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
erikdarlingdata authored Oct 9, 2024
2 parents 9a6ff12 + b435433 commit c1daefe
Showing 1 changed file with 30 additions and 5 deletions.
35 changes: 30 additions & 5 deletions sp_IndexCleanup BETA/sp_IndexCleanup BETA.sql
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@full_object_name nvarchar(768) = NULL,
@final_script nvarchar(MAX) = '',
/*cursor variables*/
@c_database_id integer,
@c_schema_name sysname,
@c_table_name sysname,
@c_index_name sysname,
@c_is_unique bit,
Expand Down Expand Up @@ -275,6 +277,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
database_id integer NOT NULL,
object_id integer NOT NULL,
index_id integer NOT NULL,
schema_name sysname NOT NULL,
table_name sysname NOT NULL,
index_name sysname NULL,
column_name sysname NOT NULL,
Expand Down Expand Up @@ -323,7 +326,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
PRIMARY KEY CLUSTERED(database_id, object_id, index_id, partition_id)
);

CREATE TABLE #index_analysis
CREATE TABLE
#index_analysis
(
database_id integer NOT NULL,
schema_name sysname NOT NULL,
Expand All @@ -340,7 +344,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
PRIMARY KEY CLUSTERED (table_name, index_name)
);

CREATE TABLE #index_cleanup_report
CREATE TABLE
#index_cleanup_report
(
database_name sysname NOT NULL,
table_name sysname NOT NULL,
Expand Down Expand Up @@ -526,6 +531,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
database_id = @database_id,
t.object_id,
i.index_id,
schema_name = s.name,
table_name = t.name,
index_name = i.name,
column_name = c.name,
Expand Down Expand Up @@ -652,6 +658,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
database_id,
object_id,
index_id,
schema_name,
table_name,
index_name,
column_name,
Expand Down Expand Up @@ -861,6 +868,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
WITH
(TABLOCK)
(
database_id,
schema_name,
table_name,
index_name,
is_unique,
Expand All @@ -869,6 +878,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
filter_definition
)
SELECT
@database_id,
id1.schema_name,
id1.table_name,
id1.index_name,
id1.is_unique,
Expand Down Expand Up @@ -922,6 +933,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
id1.filter_definition
FROM #index_details id1
GROUP BY
id1.schema_name,
id1.table_name,
id1.index_name,
id1.is_unique,
Expand Down Expand Up @@ -949,6 +961,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
READ_ONLY
FOR
SELECT DISTINCT
ia.database_id,
ia.schema_name,
ia.table_name,
ia.index_name,
ia.is_unique,
Expand All @@ -963,6 +977,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
FETCH NEXT
FROM @index_cursor
INTO
@c_database_id,
@c_schema_name,
@c_table_name,
@c_index_name,
@c_is_unique,
Expand All @@ -974,13 +990,17 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
IndexColumns AS
(
SELECT
id.database_id,
id.schema_name,
id.table_name,
id.index_name,
id.column_name,
id.is_included_column,
id.key_ordinal
FROM #index_details id
WHERE id.table_name = @c_table_name
WHERE id.database_id = @c_database_id
AND id.schema_name = @c_schema_name
AND id.table_name = @c_table_name
),
CurrentIndexColumns AS
(
Expand Down Expand Up @@ -1087,12 +1107,16 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
''
)
FROM #index_analysis ia
WHERE ia.table_name = @c_table_name
WHERE ia.database_id = @c_database_id
AND ia.schema_name = @c_schema_name
AND ia.table_name = @c_table_name
AND ia.index_name <> @c_index_name;

FETCH NEXT
FROM @index_cursor
INTO
@c_database_id,
@c_schema_name,
@c_table_name,
@c_index_name,
@c_is_unique,
Expand All @@ -1109,7 +1133,8 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THEN N'DROP'
WHEN superseded_by IS NOT NULL
AND missing_columns IS NULL
THEN N'MERGE INTO ' + superseded_by
THEN N'MERGE INTO ' +
superseded_by
WHEN superseded_by IS NOT NULL
AND missing_columns IS NOT NULL
THEN N'MERGE INTO ' +
Expand Down

0 comments on commit c1daefe

Please sign in to comment.