前提
MySQL(MariaDB)のインデックスについて勉強中です。
調べごとをしている途中で以下記事がヒットして、記事を読んで疑問に思いました。
特定のカラムに張るインデックスはセカンダリインデックスと呼ばれ、
セカンダリインデックスの葉ノードには主キーが必ず含まれています。
https://techlife.cookpad.com/entry/2017/04/18/092524
質問
セカンダリインデックスの葉ノードには主キーが必ず含まれています。
ということなので、以下2点の条件を満たすテーブルは作成できないと解釈しました。
- セカンダリインデックスが有る
- 主キーが無い
しかし、以下の通り作成できました。
なぜ、主キーが無いテーブルが作成できてしまったのでしょうか。
mysql> CREATE TABLE `test_table001` ( `col1` INT NULL, INDEX `col1` (`col1`) ); Query OK, 0 rows affected (0.011 sec)
試したこと
- カラムを増やしてみた
テーブル作成に成功した。
mysql> CREATE TABLE `test_table002` ( `col1` INT NULL, `col2` INT NULL, INDEX `col2` (`col2`) ); Query OK, 0 rows affected (0.011 sec)
全SQL
mysql> create database test_db; Query OK, 1 row affected (0.001 sec) mysql> use test_db; Query OK, 0 rows affected (0.011 sec) mysql> CREATE TABLE `test_table001` ( `col1` INT NULL, INDEX `col1` (`col1`) ); Query OK, 0 rows affected (0.011 sec) mysql> CREATE TABLE `test_table002` ( `col1` INT NULL, `col2` INT NULL, INDEX `col2` (`col2`) ); Query OK, 0 rows affected (0.011 sec)
補足情報(FW/ツールのバージョンなど)
- InnoDB
mysql> select version(); +---------------------------------------------+ | version() | +---------------------------------------------+ | 10.5.22-MariaDB-1:10.5.22+maria~ubu2004-log | +---------------------------------------------+
回答1件
あなたの回答
tips
プレビュー