SQL処理速度関連の基礎的なメモ

SQLの記述で忘れがちなことが多いのでメモしておきます。
(ついつい忘れがちなんですが、とりあえず下記内容だけは守りたいと思います…)

・否定形(NOT)のSQLはインデックスが使用されないので避けるべき

・where or はインデックススキャンのコスト増? ORではなくIN句かEXISTS句を使うべき (CASE式のときならORもOK?)
※INとEXISTSの違い・・・ IN:副問合せ→親問合せ EXISTS:親問合せ→副問合せ の順番

・可能であればSELECT * FROM ~ ではなくカラムを指定して取得する項目を狭める

・スロークエリにならないか不安なSQL内容があれば、EXPLAINを利用して事前に調査しておく



【Androidアプリ開発】serviceについて

₋ serviceとは

バックグラウンドで動作して操作を行うアプリコンポーネント。

アクティビティから独立してバックグラウンドで処理を続ける。
アクティビティが終了しても処理が続く。

フォアグラウンドサービス、バックグラウンドサービス、バインドされたサービスがある。

₋ 利用手順

①serviceクラスを継承したクラスを作成

②AndroidManufiext.xmlにサービスを登録
<タグの属性>
android:enabled 登録したサービスを利用可能か
android:exporgted 作成したサービスを外部アプリから利用可能か

③onStartCommand()メソッドにバックグラウンドで行う処理を記述
<戻り値で使用する定数(サービスが強制終了されたときにどうするか指定)>
START_NOT_STICKY, START_STICKY, START_REDELIVER_INTENT

④アクティビティからこのクラスを起動
Intentクラスをnewする、startService()、stopService()

DBのカラム削除手順について

ODINにて不要になったカラムを削除しました。
どういった手順でカラム削除するべきか少し迷ったので、手順をまとめておきます。

<手順>
① 対象となるカラムが使われている箇所がないかチェック(あれば修正する)
② 対象となるカラムのあるテーブルをコピーしてバックアップを取っておく
③ 対象となるカラムを削除(DROP またはphpMyAdminで対象カラムを削除)


①対象となるカラムが使われている箇所がないかチェック(不具合が出ないようにあれば修正する)

phpファイル内で検索などして、対象カラムが使われていないかチェックします。
使われていないメソッドについても念のため対象カラム部分の処理は修正しておいたほうがよいです。


②対象となるカラムのあるテーブルをコピーしてバックアップを取っておく

phpMyAdminで対象カラムのあるテーブルを開いて、右上にある『操作』をクリックします。
次の画面で少し下にスクロールするとテーブルのコピーの内容があるので、そこでデータベース名とテーブル名を指定してコピーします。


③対象となるカラムを削除(DROP またはphpMyAdminで対象カラムを削除)

phpMyAdminでは、対象カラムのテーブルの『構造』を開いて、対象カラムの右側にある『削除』をクリックすればOKです。

『Androidアプリ開発超入門』という本を読んだのでメモ

『Androidアプリ開発超入門』という本を読んでアプリ作成しました。基礎的な内容ですが、一応メモしたので記事としてまとめます。

SDK・・・software development kit
gradle・・・ビルドする役割
ビュー・・・Android画面上に表示できる部品の総称
ウィジェット・・・何らかの表現を行うためのビュー TextView, ImageView, Button, ProgressBar, Switch
ビューグループ・・・1つ以上のビューをとりまとめて、所定のルールで並べることができるビュー ConstraintLayout, LinearLayout, TableLayout

最初のアクティビティー ⇒ MainActivityアクティビティーが起動すると、onCreateメソッドが呼び出される最初に呼び出される処理のことをエントリーポイントと呼ぶ。

デバッグログ ⇒ Log.d(tag, msg) LogCatでログを表示できる
Android Studioでは、自動インポートによって、import文を書かなくても自動で追記される。

リテラル・・・プログラム内に値を直接記述する表現

宣言では、型と変数名を記述
・変数名には、数値から始まる文字は使えない
・また、慣例としてキャメルケースで命名することが多い

データ型・・・数値型、真偽型、文字列型

キャスト・・・型変換 
拡大変換・・・狭い型から広い型へ変換
縮小変換・・・広い型から狭い型へ変換

MySQL DOUBLE型について

入力項目の桁数についてデータベースの構造を確認しました。
その中で、DOUBLE型について分かりづらかったため内容をまとめてみました。

上のスクショはテーブルの構造ですが、
INT型などであれば桁数制限が設定されていますが、DOUBLE型だとその設定がありません。

そこで実際に桁数の多い数字をDOUBLE型の項目に入れてみたところ、下記のような表示になりました。

1e24とは、1×10の24乗を表します。
表示上これでいいのかという問題はありますが、このような形式になるため桁数をあまり気にしないで扱えますね。(無制限なわけではないですが、、)