かみぽわーる

kamipo's blog

Search Result: auto, increment

activerecord-importを利用して無効なデータを無理やりINSERTする

… NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255), `money` decimal(10), UNIQUE INDEX `index_users_on_name` (`name`)) -> 0.1967s D, [2021-01-06T14:04:10.397652 #81282] DEBUG -- : ActiveRecord::InternalMetadata Load (0.5ms) SELECT `ar…

create_or_find_byでcreateもfind_byも失敗させる

… NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` varchar(255), UNIQUE INDEX `index_users_on_name` (`name`)) -> 0.0754s D, [2020-12-16T18:55:23.132151 #49715] DEBUG -- : ActiveRecord::InternalMetadata Load (0.7ms) SELECT `ar_internal_metadata`.*…

SELECT ... FOR UPDATE同士でデッドロックさせる

… NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `index_user_tables_on_name` (`name`) ) SQL 1000.downto(1) do |i| c1.query("INSERT INTO `user_tables` (`name`) VALUES ('p#{i}')") end t = Thread.new do 10…

MySQL 5.7のONLY_FULL_GROUP_BYはちょっと進化してた

… unsigned auto_increment primary key, name varchar(255)); Query OK, 0 rows affected (0.03 sec) [mysqlcasual] > CREATE TABLE friends (user_id int unsigned, friend_id int unsigned); Query OK, 0 rows affected (0.04 sec) 以下のクエリはu.nameがGROUP BY句…

プライマリキーを使った1:1関連のテーブル分割で自動採番をしないようにする

… NOT NULL AUTO_INCREMENT, `email` varchar(255) CHARACTER SET ascii COLLATE ascii_bin NOT NULL, `password_digest` varchar(255) CHARACTER SET ascii COLLATE ascii_bin DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `idx_email` (`email`) ) ENGINE=…

InnoDBのロックの範囲とネクストキーロックの話

… NOT NULL AUTO_INCREMENT, `col1` int(11) NOT NULL, `col2` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`id`), KEY `idx_col1` (`col1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mysqlcasual`(`col1`) VALUES (2),(4),(6),(8),(10),(12),(14…

好きな子のことかslow query logのことばかり考えてほかのことがおろそかになる性格なおしたい #isucon

…ートしたいんだったらAUTO_INCREMENTしてるPRIMARY KEYがあるでしょう、なんでそっちでソートしてくれないんすか、created_atにINDEX張るのも空間効率の無駄なのでやめてほしいです。これは5年以上前からいってるけどまったく世間に伝わってないと思うんでORDER BY 狙いのキーといっしょにこれも言い続けていきたいです。 最後に、本選へ向けての教訓としては 好きな子のことかslow query logのことばかり考えてほかのことがおろそかになる性格な…

MySQL(InnoDB)でCOUNTしたくないとき

…ていなければ、idはauto_incrementなので特に細工していなければ SELECT MAX(id) AS count FROM test_queue;これも全体のレコード数に等しいでしょう。キューが既に何件か処理されている場合でも、idが小さいほうから順番に処理されていくので SELECT MAX(id) - MIN(id) + 1 AS count FROM test_queue;これでも全体のレコード数に等しくなるはずです。EXPLAINを見ても EXPLAIN …