Skip to content

Dev #477

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 9, 2024
Merged

Dev #477

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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