タグ

2014年10月19日のブックマーク (2件)

  • SQLデータベースに正しインデックスを作るのは 誰の役割?

    SQLのパフォーマンス問題は、SQLそのものと同じぐらいの歴史がある―― ある人は、SQLはそもそも遅いものだとすら言うかもしれません。これは、SQL歴史が始まった頃は正しかったかもしれませんが、今となっては全く 当てはまらないでしょう。にもかかわらず、SQLのパフォーマンス問題は今も一般的でよくあることです。どうしてそうなってしまうのでしょうか? SQL言語は、恐らく最も成功した第4世代言語(4GL)でしょう。その最大の利点は、「何を」と「どのように」 を分離できることです。SQL文は、どのようにそれを実行するかを記述せずに、単純に 何を必要としているかのみの記述になっています。以下のような例を考えてみましょう。 SELECT date_of_birth FROM employees WHERE last_name = 'WINAND'SQLのクエリは、データを要求する英語の文として読

    SQLデータベースに正しインデックスを作るのは 誰の役割?
    kwry
    kwry 2014/10/19
  • 値の一意性を保証したいときに気をつけるべきこと - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く

    たまに以下のようなロジックで値の一意性を保証しようとしているコードを見かけます。 if ( 既に値が存在するか ) { ...(1) print "別の値にしてください" } else { 値をどっかに保存する処理 ...(2) print "保存しました" } 一見うまく動きそうなんですけど、これは複数プロセスや複数スレッドが同時に実行されるような環境ではうまく動きません。 例えばwebアプリでDBに値を保存する場合などは、こういうことが考えられます。 ユーザーAが nyan という値を送ってきます まだ DB には nyanという値が存在しないので、 (1) で else 節に入ります ここでユーザーBも偶然 nyan という値を送ってきました まだ DB には nyan という値が存在しないので、 (1) で else 節に入ります else 節に入ったユーザーAのリクエストは(2)

    値の一意性を保証したいときに気をつけるべきこと - 猫型の蓄音機は 1 分間に 45 回にゃあと鳴く