* MM-45956: Optimize FileInfo stats query We Denormalize Post.ChannelId on FileInfo.ChannelId ```release-note The file info stats query is now optimized by denormalizing the channelID column into the table itself. This will speed up the query to get the file count for a channel on clicking the RHS. Migration times: On a MySQL 8.0.31 DB with 1405 rows in FileInfo and 11M posts, it took around 0.3s On a Postgres 12.14 DB with 1731 rows in FileInfo and 11M posts, it took around 0.27s ``` https://mattermost.atlassian.net/browse/MM-45956
30 строки
880 B
SQL
30 строки
880 B
SQL
SET @preparedStatement = (SELECT IF(
|
|
EXISTS(
|
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'FileInfo'
|
|
AND table_schema = DATABASE()
|
|
AND index_name = 'idx_fileinfo_channel_id_create_at'
|
|
) > 0,
|
|
'DROP INDEX idx_fileinfo_channel_id_create_at ON FileInfo;',
|
|
'SELECT 1'
|
|
));
|
|
|
|
PREPARE removeIndexIfExists FROM @preparedStatement;
|
|
EXECUTE removeIndexIfExists;
|
|
DEALLOCATE PREPARE removeIndexIfExists;
|
|
|
|
SET @preparedStatement = (SELECT IF(
|
|
EXISTS(
|
|
SELECT 1 FROM INFORMATION_SCHEMA.STATISTICS
|
|
WHERE table_name = 'FileInfo'
|
|
AND table_schema = DATABASE()
|
|
AND column_name = 'ChannelId'
|
|
) > 0,
|
|
'ALTER TABLE FileInfo DROP COLUMN ChannelId;',
|
|
'SELECT 1;'
|
|
));
|
|
|
|
PREPARE removeColumnIfExists FROM @preparedStatement;
|
|
EXECUTE removeColumnIfExists;
|
|
DEALLOCATE PREPARE removeColumnIfExists;
|