数据库引擎:innodb
create table abc(
a int,
b varchar(30),
c char(10),
d bigint(8),
FOREIGN KEY(a)
REFERENCES af(a_id)
ON DELETE RESTRICT
ON UPDATE RESTRICT,
primary key(a,b,c)
)
CREATE UNIQUE INDEX idx_abc
ON abc
( a ASC, d ASC);
CREATE INDEX idx_abc2
ON abc
( d );
请帮忙
鲜于
答案 0 :(得分:0)
您可以使用此查询来显示表的大小(尽管您需要先替换变量):
或此查询列出每个数据库中每个表的大小,最大的第一个:
SELECT
table_name AS `Table`,
round(((data_length + index_length) / 1024 / 1024), 2) `Size in MB`
FROM information_schema.TABLES
WHERE table_schema = "$DB_NAME"
AND table_name = "$TABLE_NAME";
答案 1 :(得分:0)
您可以使用 mysql.innodb_index_stats 获取数据/索引的大小。 警告,大小以页为单位=>您必须将它乘以通常为16K的页面大小。
答案 2 :(得分:0)
要进行精确估算,您需要创建表的副本并生成2 000 000个易失性数据,表示实际大小。与其他答案中显示的索引一起测量表格,然后知道答案,您可以删除副本。
如果精确度在您的情况下不那么重要,那么将记录占用的字节数与记录数相乘,并对索引执行相同操作。
记录* 2 000 000 +指数* 2 000 000~ = 50 * 2 000 000 + 60 * 2 000 000 = 110 * 2 000 000 = 22 000 000