sql >> Database teknologi >  >> RDS >> Mysql

MySQL-tabel med kun en varchar som fremmednøgle

Jeg kørte en simpel test:opret 3 tabeller, en til at holde selve dataene med to kolonner, og ID (int) og dataene (varchar[120]), en anden tabel der bruger ID'et som fremmednøgle og en sidste der bruger dataene som fremmednøgle:

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;

Indsatte 100 poster i hver tabel og sammenlignede den endelige tabelstørrelse:

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

Så jeg gætter på, at dataene IKKE er replikeret i varchar fremmednøgle, ja, i det mindste i MySQL 5.1 version.



  1. Funktionen udføres hurtigere uden STRICT modifikator?

  2. Kunne ikke oprette forbindelse til postgres-serveren i en docker fra en dockeriseret app

  3. MySQL indsætter ikke en omvendt skråstreg

  4. MySqlParameter type konflikt ved brug af Entity Framework med Pomelo