字段有默认值,添加数据问题

  • 表结构:
    CREATE TABLE table_name (
    id int(0) UNSIGNED NOT NULL AUTO_INCREMENT,
    name varchar(100) NOT NULL DEFAULT ‘’,
    age int(11) NOT NULL DEFAULT 0,
    PRIMARY KEY (id)
    );

  • 添加方式1:
    INSERT INTO table_name (age) VALUES (1)

  • 添加方式2:
    INSERT INTO table_name (name, age) VALUES (‘’, 1)

问:这两种添加方式哪种会效率更高一些,因为name有默认值为’’,所以添加时是否有必要赋值一个 ‘’去添加

讨论数量: 2

你是有多无聊 :disappointed:自己测下不行吗

    $begin1 = microtime();
    foreach(range(1, 10000) as $item) {
        \Illuminate\Support\Facades\DB::table('table1')->insert(['value'    =>    $item]);
    }

    $end1 = microtime();
    $begin2 = microtime();
    foreach(range(1, 10000) as $item) {
        \Illuminate\Support\Facades\DB::table('table2')->insert(['name'    =>    ' ', 'value'    =>    $item]);
    }
    $end2 = microtime();
    dump(compact('begin1', 'end1', 'begin2', 'end2'));

话说这样不知道对不对

array:4 ["begin1" => 1639557577.4125
  "end1" => 1639557587.0162
  "begin2" => 1639557587.0162
  "end2" => 1639557596.9775
]
2年前 评论
CREATE TABLE `table1` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL DEFAULT '',
  `value` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30001 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `table2` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `value` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=30001 DEFAULT CHARSET=utf8mb4;

这是数据结构,这俩应该没啥区别吧

2年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!