primary)LaravelTwitterFacebookはてブPocketLINEコピー2021.11.17アプリケーションの性能改善などで、indexを貼りたいことがあると思います。今回はLaravelでマイグレーションを追加して、index・unique・primaryを作成、削除する方法について書いています。Laravelのバージョン8とMySQLの5.7.36を使って検証しました。公式ドキュメントの下記の内容を実際に試してみました。https://laravel.com/docs/8.x/migrations#creating-indexes今回は、このmembersテーブルにインデックスなどを貼ってみたいと思います。YES目次インデックス(index)を張るには?マイグレーションファイルを確認するマイグレーションを実行するインデックス名を変えたいインデックス(index)を削除するには?複合インデックス(index)を張るには?ユニークキー(unique)を作成するには?マイグレーションを実行する主キー(primary)を作成するには?マイグレーションを実行するインデックス(index)を張るには?インデックスをマイグレーションで作成する方法です。インデックスはカラムに張ることで、本に索引を用意しておくように、データベースからSELECTするときに検索しやすくする設定です。うまく使うことで、LaravelなどのWebアプリケーションから検索するときに検索性能が向上します。インデックスを貼るには、マイグレーションファイルを作成してから貼ると良いです。マイグレーションを作る時には下記のコマンドを実行します。--table=[テーブル名]テーブル名と書いている箇所に任意のテーブル名を入れます。これは固定ではないので、ファイル名は他のマイグレーションと被らないわかりやすい名前でつけておけば良いかと思います。マイグレーションファイルを確認する今回は、下記のコマンドでmembersのnameカラムにインデックスを貼るようにファイルを作成しました。--table=membersそうすると、このようにファイルが作成されます。2021_11_15_122021_create_index_to_members_tableこの作成されたファイルのupメソッドとdownメソッドに対して、インデックスに対する操作を書きます。作成後のファイルを編集して、下記のようにしました。}}Schemaファサードクラスのtableメソッドを使用して、インデックスを作成します。upメソッドの方にクロージャで下記のように記載しました。indexメソッドに入力しているのはカラム名です。membersテーブルのnameカラムにインデックスが貼られます。$table->index('name');downメソッドでロールバックする時には、インデックスが消えるように、下記のように書きました。$table->dropIndex('members_name_index');これでロールバックするとインデックスが削除されます。引数に指定しているのはインデックスの名前です。$table->indexを使用してインデックスを作ったときは、デフォルトで「テーブル名_カラム名_index」というインデックス名になります。マイグレーションを実行する実際に実行してインデックスが貼れているか確認します。マイグレーションの実行が完了したら下記のようにMigratedになります。Workbenchから確認すると、下記のようにインデックスが貼れていることが確認できました。インデックス名を変えたいインデックスの名前をデフォルトから変えたい場合には、第2引数に好きな名前を入れると良いです。'index_name_test');複合インデックスを作ると長くなることもあるので、そういう時に使うと良いかと思います。インデックス(index)を削除するには?貼ったインデックスを削除する場合、マイグレーションをロールバックすると良いです。backと表示されて、ロールバックされたことが確認できます。(55.95ms)dropIndexのカラム名が間違えていると、下記のようなエラーになるので、気をつけてください。`members_name_index`)複合インデックス(index)を張るには?複合インデックスを作るには、複数のカラムを配列で指定すると良いです。membersテーブルのnameとaddressに貼る場合は、下記のようになります。'address']);});この場合のインデックス名はカラム名が増えて、members_name_address_indexとなるので、削除する場合は下記のようにします。$table->dropIndex('members_name_address_index');});ユニークキー(unique)を作成するには?ユニークキーをマイグレーションで作成する方法です。ユニークキーはカラムに対して、重複を許さないけどNULLを入れることができるカラム設定です。ユニークキーをカラムに対して作成すると、インデックスも自動で作られます。インデックスを貼った時と同じようにマイグレーションを作成します。--table=membersmembersテーブルのaddressカラムに対して、ユニークキーを作ってみました。マイグレーションで作成されたファイルを下記のように編集しました。}}インデックスと同じようにSchemaファサードクラスのtableメソッドを使用します。$table->uniqueでユニークキーが付けれます。削除する時にはdropUniqueメソッドを使用します。渡す引数は作成したキー名です。デフォルトで「テーブル名_カラム名_unique」というユニークキー名になります。マイグレーションを実行する実際に実行して、確認してみます。インデックスの時と同じようにマイグレーションが流れました。(46.02ms)このように、Uniqueなインデックスができていることが確認できました。削除する時には、インデックスの時と同様にロールバックすると削除されます。主キー(primary)を作成するには?主キーをマイグレーションで作成する方法です。主キーはカラムに対して、重複を許さない必須なカラム設定です。主キーをカラムに対して貼ると、インデックスも自動で作られます。インデックスを貼った時と同じようにマイグレーションを作成します。--table=membersmembersテーブルのtelカラムに主キーを作成してみます。先に主キーが貼ってあるカラムがあるとエラーになるので、idカラムがない状態でmembersテーブルをマイグレーションして試してみました。マイグレーションファイルは下記のように編集しました。}}インデックスの時と同様にして、tableメソッドの第2引数のクロージャに処理を書きます。primaryメソッドを使用して、$table->primaryとすると主キーが作成できます。渡す引数はカラム名です。$table->primary('tel');消したい時にはdropPrimaryメソッドを使います。$table->dropPrimary('tel');こちらもカラム名を指定すると削除できました。マイグレーションを実行する実際に主キーが作成できたか確認します。マイグレーションを下記のように流しました。(66.50ms)このようにtelカラムが主キーになっていることが確認できました。独学に限界を感じたら、オンラインで学んでみよう!本当にわからない場合は、知っている人に聞くと近道になります。・PHP/Laravelのおすすめプログラミングスクール5選!PHP/Laravelのおすすめプログラミングスクール5選!PHPやLaravelが学べるプログラミングスクールを5つ選んで比較してみました。・super)Pythonでクラスを使う際に継承する方法について書いています。今回は下記の内容について、記載しています。・クラス継承について・クラスをオーバーライドする方法について・superメソッドについて載せているサンプルコードはPythonのバージ...PHPPHPで数値を文字列に変換する4つの方法!PHPで数値を文字列に変換する方法について書いています。PHPの型変換は、PHPが処理の流れを見て自動的にやってくれるので、基本的には気にしなくても大丈夫です。この記事では下記の方法で、数値を文字列に変換します。・stringキャストを使う...プログラミングAndroidアプリ開発の学習におすすめ本4選!【現役エンジニア選定】Androidアプリ開発の学習におすすめの本を4つ紹介しています。最初にAndroidについて簡単に説明して、その後におすすめの本を紹介しました。最後にAndroidの開発を「どの本で学ぶのが良いか」の考察をまとめています。筆者のA...JavaScriptJavaScriptのfor...ofの使い方!繰り返しサンプル4選!JavaScriptのfor...ofの使い方について書いています。for...ofを使うことで、指定した要素でループ処理することができます。簡単に解説した後に、いろんな要素をループするサンプルコードを書いてみました。for...ofの使い...JavaScriptJavaScriptで文字列の空白を削除する5つのメソッド!JavaScriptで文字列の空白(スペース)を削除する方法について解説します。文字列の空白を取り除くときには、文字列から下記の5つのメソッドを使用することができます。・trim・trimStart・trimEnd・trimLeft・tri...PythonPythonのリストから要素を削除する4つの方法!Pythonのリストに格納した要素を削除する方法について書いています。載せているコードはPythonのバージョン3.10.5で確認しました。要素番号(インデックス)を指定して削除するリストの要素番号を指定して、削除する方法です。削除したいリ...JavaScriptJavaScriptで配列に含むか検索する5つの方法!JavaScriptで配列に要素を含んでいるか検索する方法について書いています。配列の要素を含むか確認する時には、下記のメソッドを使います。・includesメソッド・indexOfメソッド・findIndexメソッド・everyメソッド・...JavaScriptJavaScriptで文字列から数値に変換する3つの方法!JavaScriptで「文字列から数値」に変換する方法について書いています。変換するサンプルコードと一緒に解説しています。文字列を数値に変換する時には下記を使います。コメントをキャンセルメールアドレスが公開されることはありません。名前メールサイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。Δプロフィールyasuaki福岡でフリーランスをやってます。業界歴13年になりました、SESで働くことがほとんどです。なんでもやってますが、Webが得意です。このブログではプログラミング技術の内容を中心に、たまに商品レビューとかを書いています。目次インデックス(index)を張るには?マイグレーションファイルを確認するマイグレーションを実行するインデックス名を変えたいインデックス(index)を削除するには?複合インデックス(index)を張るには?ユニークキー(unique)を作成するには?マイグレーションを実行する主キー(primary)を作成するには?マイグレーションを実行するPHP/Laravelの学習におすすめの本を選定!・PHPの学習におすすめの本6選!【現役エンジニアが選定】PHPの学習におすすめの本6選!PHPの学習におすすめの本を6つ紹介しています。Laravel・CakePHP・SymfonyなどのWebフレームワークやWordPressなどに使われているPHP。フレームワークの内部のコードや、使用されているシステムのコードを理解するた...codelikes.com2022.08.04・Laravelの学習におすすめの本3選!【現役エンジニアが選定】Laravelの学習におすすめの本3選!(本が必要?)今回はLaravelの学習にオススメの本を3つ紹介しています。学習するにあたって本が必要か考えてみました。Techpit前半はPHPのみでEvernote風メモアプリケーションを開発し、後半は同じものをLaravelで開発する。フレームワークを使用しない場合の開発と、Laravelのメリットを実際に開発することで体感。開発を通じて、簡単なアプリケーションの作り方やSQLの書き方、dockerの使用方法などを学ぶ。商品レビューゲーム食レポお問い合わせホーム検索トップサイドバータイトルとURLをコピーしました。