カテゴリー【MySQL】
【MySQL】テーブル定義を確認してインデックスを操作する【MariaDB】
POSTED BY
2023-01-20
2023-01-20

すぐに忘れてしまうのでメモ。
まずはテーブル定義を確認する。
show create table article; | Table | Create Table | article | CREATE TABLE `article` ( `id` varchar(128) NOT NULL, `title` text NOT NULL, `plain` text NOT NULL, PRIMARY KEY (`id`), FULLTEXT KEY `title` (`title`), FULLTEXT KEY `plain` (`plain`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
インデックスがいくつかあるようだ。詳細を確認する。
show index from article; +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | article | 0 | PRIMARY | 1 | id | A | 2 | NULL | NULL | | BTREE | | | NO | | article | 1 | title | 1 | title | NULL | NULL | NULL | NULL | | FULLTEXT | | | NO | | article | 1 | plain | 1 | plain | NULL | NULL | NULL | NULL | | FULLTEXT | | | NO | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
上記フルテキストインデックスでの検索だが、ちゃんと含む文字列を指定しているのに出なかったり、いまいちなので、通常のインデックスに変更したい。よって、まずこの全文検索インデックスどもを削除する。
drop index title on article; Query OK, 0 rows affected (0.011 sec) Records: 0 Duplicates: 0 Warnings: 0 drop index plain on article; Query OK, 0 rows affected (0.015 sec) Records: 0 Duplicates: 0 Warnings: 0
削除されたか確認
show index from article; +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | article | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | | NO | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ show create table article; | Table | Create Table | article | CREATE TABLE `article` ( `no` float NOT NULL, `id` varchar(128) NOT NULL, `date` timestamp NOT NULL DEFAULT current_timestamp(), `upd_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `title` text NOT NULL, `honbun` text NOT NULL, `plain` text NOT NULL, `display` text NOT NULL, `category` varchar(128) NOT NULL, `status` smallint(6) NOT NULL DEFAULT 0, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
通常のインデックスに作り直す
create index title on article(title); Query OK, 0 rows affected, 1 warning (0.004 sec) Records: 0 Duplicates: 0 Warnings: 1 create index plain on article(plain); Query OK, 0 rows affected, 1 warning (0.009 sec) Records: 0 Duplicates: 0 Warnings: 1
作成されたか確認
show create table article; | Table | Create Table | article | CREATE TABLE `article` ( `no` float NOT NULL, `id` varchar(128) NOT NULL, `date` timestamp NOT NULL DEFAULT current_timestamp(), `upd_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(), `title` text NOT NULL, `honbun` text NOT NULL, `plain` text NOT NULL, `display` text NOT NULL, `category` varchar(128) NOT NULL, `status` smallint(6) NOT NULL DEFAULT 0, PRIMARY KEY (`id`), KEY `title` (`title`(1024)), KEY `plain` (`plain`(1024)) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 | show index from article; +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | Ignored | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+ | article | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | | NO | | article | 1 | title | 1 | title | A | 0 | 1024 | NULL | | BTREE | | | NO | | article | 1 | plain | 1 | plain | A | 0 | 1024 | NULL | | BTREE | | | NO | +---------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+---------+
んん…??1024ってなんだ??と調べたら、Sub_partといって、最初の1024バイトのみをインデックスするということらしい。これを256バイトとかにしたければ、
create index title on article(title(256));
などと指定するらしいが、全文検索インデックスではデフォルトはNULL=文字数無制限=であったと思うので、同じように1024でなく無制限にしたい。
なのでNULLを指定して作り直そうとしたら…
drop index plain on article; Query OK, 0 rows affected (0.006 sec) Records: 0 Duplicates: 0 Warnings: 0 create index plain on article(plain(NULL)); ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'NULL))' at line 1
と、怒られてエラーになってしまった。NULLでなく256とかなら成功するので、通常インデックスは最大でも1024バイトまでなのか…??MariaDBだからかもしれないが…。
医薬部外品「薬用VCボディミスト」背中ニキビ・デコルテにビタミンCニキビケア

薬用VCボディミストは、ニキビケア・マラセチア菌を殺菌する成分、
美白成分などを贅沢に配合したボディニ...【READ MORE】
生活トラブルをスピーディに解決!24時間365日受付対応【生活110番】

生活110番は生活の中で発生するお困りごとやトラブルを解決する専門業者をご紹介するサイトになります。
約...【READ MORE】
愛犬の可愛らしい姿を撮影して自慢しよう!【Furboドッグカメラ】

Furbo(ファーボ)は、
ドッグオーナー、獣医、ドッグトレーナーなど
5,000人以上の愛犬家の声を反映させ、...【READ MORE】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋
※本記事は当サイト管理人の個人的な備忘録です。本記事の参照又は付随ソースコード利用後にいかなる損害が発生しても当サイト及び管理人は一切責任を負いません。
※本記事内容の無断転載を禁じます。
※本記事内容の無断転載を禁じます。
【キーワード検索】
サーチプラスfor車両

もう目立たせない、7日間本気の毛穴専用トライヤル4点セット
30日で実感!60日で感動!話題の濃密「まゆ毛」「まつ毛」美容液【エクストラロングラッシュ】
ランドセルに着けておくだけでいつでも居場所が分かり安心「soranome(ソラノメ)」
楽天ポイントが使える!Amazonペイも使える!犬用サプリ「目の健康維持に」【毎日愛眼 ブルーベリー&ルテイン】
無添加住宅メーカーが開発した無添加にこだわった美容液【潤静】
サクサク快適インターネット【@nifty光】
マイメロディオリジナルアクセサリー特設サイト【ジェイウェルドットコム】
【国内最大級】会員ネットワーク オタクに寄り添う婚活《とら婚》
消化器ケアで健康寿命をのばすベルギー産プレミアムペットフード【ブラバンソンヌ】

もう目立たせない、7日間本気の毛穴専用トライヤル4点セット

30日で実感!60日で感動!話題の濃密「まゆ毛」「まつ毛」美容液【エクストラロングラッシュ】

ランドセルに着けておくだけでいつでも居場所が分かり安心「soranome(ソラノメ)」

楽天ポイントが使える!Amazonペイも使える!犬用サプリ「目の健康維持に」【毎日愛眼 ブルーベリー&ルテイン】

無添加住宅メーカーが開発した無添加にこだわった美容液【潤静】

サクサク快適インターネット【@nifty光】

マイメロディオリジナルアクセサリー特設サイト【ジェイウェルドットコム】

【国内最大級】会員ネットワーク オタクに寄り添う婚活《とら婚》

消化器ケアで健康寿命をのばすベルギー産プレミアムペットフード【ブラバンソンヌ】

【最近の記事】【全部の記事】
PowerPointでテキストを左右反転するにはオンボードグラフィックスと外付けビデオカードを同時利用してデュアルディスプレイにする
EaseUS RecExpertsで画面を録画する
【MySQL】テーブル定義を確認してインデックスを操作する【MariaDB】
通常のC言語配列にstd::for_each,find_if等のC++ラムダ式ループを適用する
【C/C++】処理系に依存しない64ビットフラグ演算集【保存版】
【C++】2つのvector配列を比較して両方に共通する要素を取り出す【set_intersection】
【Node.js】ビットコイン(BTC)およびイーサリアム(ETH)の日本円(JPY)レートを取得する
【Node.js】BTC←→SATOSHIおよびETH←→WEIの相互変換を行う
【Node.js】文字列を後から復元できる可逆の暗号化にかける
【人気の記事】【全部の記事】
進研ゼミチャレンジタッチをAndroid端末化する【Windows10】リモートデスクトップ間のコピー&ペーストができなくなった場合の対処法
Googleスプレッドシートを編集したら自動で更新日時を入れる
Googleスプレッドシートで図形をコピーして使いまわすには
【Javascript】JSON配列内にある特定要素の取得法【Node.js】
Windows版Google Driveが使用中と言われアンインストールできない場合
Googleファミリーリンクで子供の端末の現在地がエラーで取得できない場合
【Linux共通】プロキシサーバーの利用設定
Androidホームで左にスワイプすると出てくるニュース共を一切表示させない方法
Ubuntuで固定IPアドレスを使う設定をする
【カテゴリーリンク】
Android
iPhone/iPad
Flutter
MacOS
Windows
Debian
Ubuntu
CentOS
FreeBSD
RaspberryPI
HTML/CSS
C/C++
PHP
Java
JavaScript
Node.js
Swift
Python
Amazon/AWS
CORESERVER
Google
仮想通貨
LINE
IBM Watson
Microsoft Azure
Xcode
VMware
MySQL
PostgreSQL
Redis
Groonga
Git/GitHub
Apache
nginx
Postfix
SendGrid
Hackintosh
Hardware
Fate/Grand Order
ウマ娘
将棋