技術メモ

メモ代わりに使います!

SQL

Python-insert実行してもエラーはないのにデータが作成されない

下記のようにcommitとcloseを忘れないように db = connect_to_cloudsql() cursor = db.cursor() cursor.execute('SET NAMES utf8;') cursor.execute('SET CHARACTER SET utf8;') cursor.execute('SET character_set_connection=utf8;') cursor.execute("inse…

Python-Postされた日本語をdbに格納しようとするとエラーになる

エラー内容 UnicodeEncodeError: 'latin-1' codec can't encode characters in position 52-55: ordinal not in range(256) 上記を対応しようとした場合入れる値をencode .encode('utf-8')

SQL-アンチパターン斜め読み

SQL

①Jaywalking(信号無視)1対多または多対多の関係テーブル間のid管理において、varchar等のカラムを用意して「1,2,3,4,5」のように区切り文字で区切った値を代入すること②Native Trees(素朴な木)親子関係を持つテーブル間のid管理において、中間テーブルを用意…

SQL-INDEXを作成するとどうなる

①検索が早くなる②データの挿入、更新、削除が遅くなる⇒レコードに対して処理をするだけではなくインデックスに対しても処理しなくてはいけなくなるからそのため更新を頻繁に行うテーブルの場合は2~3個までにしておく

SQL-INDEXを作成したほうが良い場合と悪い場合

作成したほうが良い場合・大規模な表のある特定の行を頻繁に検索する・列の値が(ほぼ)一意的である・Where句の条件として頻繁に使用する列である作成しないほうが良い場合・列内の値の種類が少ない(性別など)・NULL値が多くNULLでない値を検索しない・表…

SQL-改善方法

①SELECT文で*を使わない②WHERE句の左側で算術演算や関数を指定しない⇒例えインデックスが定義されているカラムでもテーブル全体を走査してしまい、インデックスが効かなくなる③テーブルの別名を利用する⇒テーブルに別名を付けてフィールド名にはその別名をつ…