1.之前经常在oracle数据库中使用存储过程,换到mysql后用的不多,但是有时候也用,大致记录一下,基本和oracle的一样。
CREATE DEFINER = `root`@`%` PROCEDURE `NewProc`() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE n_id decimal; DECLARE cur1 CURSOR FOR SELECT b.ID FROM book_fs AS b where b.BOOKID NOT IN (SELECT ID FROM media) ORDER BY b.ID limit 500000; DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; -- 打开游标 OPEN cur1; REPEAT FETCH cur1 INTO n_id; IF NOT done THEN DELETE from book_fs where id = n_id; END IF; UNTIL done END REPEAT; CLOSE cur1; END;
2.统计所有表数据量
use information_schema; select table_name,table_rows from tables where TABLE_SCHEMA = 'your_DB_name' order by table_rows desc;
-- 说明:以上语句得出的行统计数量,并不精确,是一个大约估计的数量