MySQL 4.0 には information_schema がなく、'show table status from db ' は innodb テーブルのおおよその行数のみを示します。
したがって、innodb テーブルの数を取得する最も簡単な方法は何ですか。もちろん、大きなテーブルでは遅くなる可能性がある count(*) 以外です。
更新しました
InnoDB を使用する場合、テーブル全体の正確な行数は COUNT(*)だけです。4.0 から 5.0 へのアップグレードは 1 回しか行われないため、速度に対処する必要があります。
待って!速い方法があります!トリガーとメタ テーブルを使用します。
CREATE TABLE meta (
`name` char(32) NOT NULL ,
`value_int` int ,
unique (name)
) ENGINE = INNODB;
insert into meta (name, value_int) values ('mytable.count', 0);
それから
set delimiter |
CREATE TRIGGER mytablecountinsert AFTER INSERT ON mytable
FOR EACH ROW BEGIN
update meta set value_int=value_int+1 where name='mytable.count';
END;
|
CREATE TRIGGER mytablecountdelete AFTER DELETE ON mytable
FOR EACH ROW BEGIN
update meta set value_int=value_int-1 where name='mytable.count';
END;
|
まあ、使用*
は間違いなく最適ではありませんが、1列だけではどうですか。私は通常、id
列を使用して行数を数えます。