3

MySQL 4.0 には information_schema がなく、'show table status from db ' は innodb テーブルのおおよその行数のみを示します。

したがって、innodb テーブルの数を取得する最も簡単な方法は何ですか。もちろん、大きなテーブルでは遅くなる可能性がある count(*) 以外です。

4

4 に答える 4

4

更新しました

InnoDB を使用する場合、テーブル全体の正確な行数は COUNT(*)だけです。4.0 から 5.0 へのアップグレードは 1 回しか行われないため、速度に対処する必要があります。

于 2009-07-28T01:02:10.117 に答える
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;
|
于 2011-02-15T21:44:34.063 に答える
-2

まあ、使用*は間違いなく最適ではありませんが、1列だけではどうですか。私は通常、id列を使用して行数を数えます。

于 2009-07-28T01:02:16.687 に答える