sql >> Databáze >  >> RDS >> Mysql

Tabulka MySQL pouze s varcharem jako cizím klíčem

Provedl jsem jednoduchý test:vytvořte 3 tabulky, jednu pro uchování samotných dat se dvěma sloupci a ID (int) a data (varchar[120]), další tabulku, která používá ID jako cizí klíč, a poslední, která používá data jako cizí klíč:

CREATE TABLE `dados` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`) USING BTREE,
  KEY `idx` (`id`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `refINT` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `dado` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`dado`),
  CONSTRAINT `id` FOREIGN KEY (`dado`) REFERENCES `dados` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `refSTR` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `dado` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `nome` (`dado`),
  CONSTRAINT `nome` FOREIGN KEY (`dado`) REFERENCES `dados` (`name`) ON DELETE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

Vložil 100 záznamů do každé tabulky a porovnal konečnou velikost tabulky:

dados:  192.0 KB
refINT: 32.0 KB
refSTR: 32.0 KB

Předpokládám tedy, že data NEJSOU replikována v cizím klíči varchar, tedy alespoň ve verzi MySQL 5.1.



  1. Zřetězení záznamů do jednoho sloupce bez zacyklení?

  2. Seznam prvků číselného formátu v Oracle

  3. Migrace PostgreSQL databází z On-Prem do cloudu pomocí AWS RDS

  4. Chyba SQL Oracle LEFT JOIN a SUBQUERY:ORA-00905:chybějící klíčové slovo