MySQL优化两个关联表的查询 sql使用join的关联字段字的字符集不同影响效率

转载 · 阿,葱来了-C is coming · 2023-12-01 · 原文

修改现有数据库的各个字段的字符集类型

SELECT
    TABLE_SCHEMA '数据库',
    TABLE_NAME '表',
    COLUMN_NAME '字段',
    CHARACTER_SET_NAME '原字符集',
    COLLATION_NAME '原排序规则',
    CONCAT(
    'ALTER TABLE ',
    TABLE_NAME,
    ' MODIFY COLUMN ',
    COLUMN_NAME,
    ' ',
    COLUMN_TYPE,
    -- - 设置新的编码和排序规则
    ' CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci',
    ( CASE WHEN IS_NULLABLE = 'NO' THEN ' NOT NULL' ELSE '' END ),
    ( CASE WHEN COLUMN_COMMENT = '' THEN ' ' ELSE concat( ' COMMENT''', COLUMN_COMMENT, '''' ) END ),
    ';' 
) '修正SQL' 
FROM
    information_schema.`COLUMNS` 
WHERE
    -- -过滤正确排序规则
    COLLATION_NAME != 'utf8mb4_general_ci'
    -- -数据库名称  使用你自己的数据库名
    AND TABLE_SCHEMA = '你的数据库名';