您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何从存储过程创建索引或在MySQL中的每个表上创建索引?

如何从存储过程创建索引或在MySQL中的每个表上创建索引?

过程的核心问题是该PREPARE语句仅适用于用户变量或字符串文字。它无法从过程变量准备语句。

PREPARE stmt_name FROM preparable_stmt … preparable_stmt是 包含sql语句文本的 。

DELIMITER //
CREATE PROCEDURE createModifiedIndex(t VARCHAR(256))
  BEGIN
    DECLARE idx VARCHAR(256);
    DECLARE i INT;

    SET idx = CONCAT('idx_', t, '_modified_on');
    SET i = (SELECT COUNT(*) FROM INFORMATION_SCHEMA.STATISTICS WHERE table_name = t AND index_name = idx);
    IF i = 0 THEN
        SET @makeIndexsql = CONCAT('CREATE INDEX ', idx, ' ON ', t, ' (modified_on);');
        PREPARE stmt FROM @makeIndexsql;
        EXECUTE stmt;
        DEALLOCATE PREPARE stmt; -- Use DEALLOCATE when you're done with the statement
    END IF;
  END //

DELIMITER ;
MySQL 2022/1/1 18:53:08 有350人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶