いつインデックスを作成するか? MySQL5.6以上であれば、インデックス作成中に該当テーブルに対するSELECTやUPDATEが可能です。 しかし、MySQLにはメタロックという仕組みがあるため、メタロックが取得できない時間帯には インデックスを作成してはいけません。 結果として、該当テーブルへのアクセスが少ない時間帯に実施する必要があります。 ※数千万件程度のレコード数のテーブルになってくると30分以上かかったりします。 メタロックのまとめ ポイントだけ記載します - ALTER TABLE文の開始時にメタロックを取得する。 - メタロックが取得できない場合、「Waiting for table metadata lock」となり、待ちになる。 - 「Waiting for table metadata lock」の間、該当テーブルへのアクセスがすべて待ちになるため、システム障害につな
![MySQLでインデックスを作成する手順と注意点 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/2a5fd8a033afce29b439c62bb66d002c517a00e1/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9TXlTUUwlRTMlODElQTclRTMlODIlQTQlRTMlODMlQjMlRTMlODMlODclRTMlODMlODMlRTMlODIlQUYlRTMlODIlQjklRTMlODIlOTIlRTQlQkQlOUMlRTYlODglOTAlRTMlODElOTklRTMlODIlOEIlRTYlODklOEIlRTklQTAlODYlRTMlODElQTglRTYlQjMlQTglRTYlODQlOEYlRTclODIlQjkmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT01NiZ0eHQtY2xpcD1lbGxpcHNpcyZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWVkYjU0YzI1N2YyZTRjNGE5ZGE4YTU3MDNkMmQ5ZmIy%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTcxNiZ0eHQ9JTQwcGFydWtlJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzImdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1hYWRjODkxNDdkYjhmZjljYzdiMDE1NTQ3NzkzYTJiYg%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Db03ec2beb0c1966602738fb4c5f1e0db)