タグ

TipsとSQLに関するiwwのブックマーク (15)

  • MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?

    な、なんと person_diaryはインデックスが適用されずにフルスキャンされ(1行目のkeyがNULL) 逆にpersonはid列に設定してあるプライマリキーが適用される(2行目のkeyがPRIMARY) という二つの謎な現象が発生しました。 そもそもpersonはnameカラムに対してLIKE検索しているのに、id列のプライマリキーが効いちゃうのは全く納得いきません。なぜ、どうしてこんなことが起こるのでしょう? 原因 私がMySQLに期待していた動きとしては ①サブクエリを実行してperson.idのリストをメモリ中に作成 ②person.person_idに張られているインデックスを使って検索 というところでした。 期待通りに動いてくれなかったのには二つのMySQLの特性が関係していました。 特性① サブクエリを含むSQLは外側から先に実行される MySQLの場合、サブクエリを含む

    MySQLではIN句とサブクエリの組み合わせはインデックスが効かない!?
    iww
    iww 2016/05/18
    『・IN句の中をサブクエリではなく事前にプログラムで取得しておいてカンマ区切りで渡す ・JOINしちゃう のどちらか』
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
    iww
    iww 2015/07/14
    ORDER BY 1 は「1番目のカラム」でソート の意味。 MySQL,PostgreSQL,Oracleで使える。
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • mysqlで質問です。 例えばselect文でlimitをかけた場合、limitをかけない場合の検索該当個数を得る方法などがあったら教えてください。…

    mysqlで質問です。 例えばselect文でlimitをかけた場合、limitをかけない場合の検索該当個数を得る方法などがあったら教えてください。 2回同じようなsqlをはくのが効率悪いと考えています。 select * from s_hoge where s_hoge.s_genre_id=2 limit 10 offset $offset”;

  • SQLite で auto-increment なフィールドを作成する方法

    SQLite で auto-increment なフィールドを作成する方法 2006-02-12-1: [SQLite][PHP][MySQL] PHP のマニュアルの sqlite_last_insert_rowid の項目を見ていたら Tip: You can create auto-increment fields in SQLite by declaring them as INTEGER PRIMARY KEY in your table schema. つまり,SQLite で auto-increment なフィールドを作りたければ, INTEGER PRIMARY KEY を指定してあげればいいらしい. このような記述を見つけたのでテストしてみた. - SQLite 2.x の場合 $ sqlite test.db SQLite version 2.8.16 Enter "

    iww
    iww 2009/06/04
    INTEGERを面倒がってINTと書くと、駄目。
  • オラクル特殊SQLメモ(Hishidama's Oracle SQL Memo)

    Oracle特殊SQLメモ 書いておかないと忘れてしまうような、Oracleのちょっと面倒なSQLや動作のメモです。

    iww
    iww 2009/01/14
    置換変数 & などをエスケープする方法とか
  • Oracle Tips

    Oracle Tips テーブル内のレコードの全削除truncate table テーブル名 DELETE文と異なりトランザクションの対象とならないため大量のレコードも一瞬で削除され、ロールバックセグメントの空き容量を気にする必要もありません。(とーぜん、コミットやロールバックはできません) スキーマに存在しているテーブル名の取得select * from user_tables select * from tab (こっちはビューも取得可能) スキーマ内のオブジェクト名の取得select * from all_objects where owner = 'ユーザ名' order by owner, object_type, object_name ユーザ名は大文字。 USER_OBJECTS でも可。 (こっちはスキーマ内のオブジェクトが対象) テーブル構造の取得describe テーブ

  • SQL*Loaderメモ(Hishidama's sqlloader for Oracle9i Memo)

    CSVファイルからOracleのテーブルへデータを流し込むツール。 大量のinsert文を発行するよりは、断然高速。 データであるCSVファイルや固定長ファイルと、ロード方法を指定するコントロールファイルを用意 して実行する。 (CSVファイルからのロードはこのSQL*Loaderが使えるが、CSV出力には標準的な方法は無いらしくて、select文で加工する方法がよく使われるらしい。 このSQL文をいちいち書くのは少々面倒なので、SQL生成用Excelマクロを作ってみました) コントロールファイル CSVファイルの各項目とテーブルの項目との関連付け等を指定する。 (コントロールファイルをテキストエディタで書くのはけっこう面倒なので、コントロールファイル作成用Excelマクロを作ってみました(CSVファイル用、固定長ファイル用)) 例)emp.ctl: OPTIONS(LOAD=100,SK

  • 超体育会系:OracleのROW_NUMBER関数をMySQLで - livedoor Blog(ブログ)

  • 「ユニークなIDの自動生成」(1) Database Expert - @IT

    IT 会議室 Indexリンク Windows Server Insider Insider.NET System Insider XML & SOA Linux Square Master of IP Network Java Solution Security & Trust Database Expert RFID+IC リッチクライアント & 帳票 Server & Storage Coding Edge @ITクラブ Cafe VB業務アプリケーション開発研究 @IT SpecialPR

    iww
    iww 2008/09/02
  • Works - 逆引きSQL比較 : ROWNUM を使用した擬似スクロール・カーソル 

    サンプルテーブルを使用し、実際によく使うであろうSQL文を挙げていきます。 このページでは、ORACLE について述べています。 他の RDBMS について見たい場合は、各項のリンク ( ORACLE MSSQL SSA Postgres MySQL Jet ) をクリックしてください。 また、使われている言葉の意味がわからない場合は、共通事項を見てください。 この項で使用するサンプルテーブルについて 日付型データをフォーマットして表示するには? 日付の演算あれこれ INSERT時にキーを自動的に連番で振るには? 同一テーブル内の別の行にある情報を結合して検索するには? 結合条件に合致しなくてもすべての行を表示させるには? SELECT文の中で条件分岐するには? クロス集計の方法は? 最大値と等しいデータを検索するには? AテーブルにあってBテーブルにないデータ

  • 1列について重複行を除いて全列をSELECTするSQL文

    (1)MySQL バージョン5.0以降 まだ開発中バージョンですが、サブクエリがサポートされています。 SELECT * FROM table_name WHERE (B,C) IN(SELECT B,MAX(C) FROM table_name GROUP BY B); (2)MySQL バージョン5.0より前 B列の値毎の最新日付を、一旦、テンポラリテーブル(*1)に格納する方法を示します。 (a)テンポラリテーブルの定義 CREATE TEMPORARY TABLE w_tbl(B B列のデータ型,C C列のデータ型); (b)操作 INSERT INTO w_tbl(B,C) SELECT B,MAX(C) FROM table_name GROUP BY B; SELECT x.A,x.B,x.C FROM table_name AS x,w_tbl AS y WHERE x.B

    1列について重複行を除いて全列をSELECTするSQL文
  • 帰ってきたHAVING句:CodeZine

    はじめに SQLのクラスを教えるとき、最大の課題の一つが、生徒たちがそれまでに手続き型言語から身に付けたことを、一度「頭から追い出す(unlearn)」ことだ。私がそのとき採る一つの方法は、処理を「レコード単位」ではなく、集合という観点から考えるよう強調することである。 ――――J.セルコ  SQLの考え方を習得するときに最大の障壁となるのが、私たちの多くが慣れ親しんだ手続き型言語の考え方(ソート、ループ、分岐、代入、等々)です。SQL質を理解するには、私たちの心に強固に貼り付いてしまった思考パターンを、一度ベリベリと引き剥がし、更地に戻してやる必要があります。それが、セルコが「unlearn」という言葉に込めたニュアンスです。セルコ自身、Fortranからプログラマとしてのキャリアを開始し、C、Algol、Pascalと手続き型言語を渡り歩いた後にSQLを身に付けた人物だけに、言葉に

    iww
    iww 2007/11/05
  • 1人で稼ぐ日記 | MySQL:1台しかない環境でエセ負荷分散

    MySQLのネタ。 1台しかない環境でエセ負荷分散を行う。 MySQLで負荷分散を考えたとき、 1台目にマスターのDBサーバー、 2台目以降をスレーブのDBサーバーとして用いる。 マスターは更新系のみのSQL文を、 スレーブは参照系のみのSQL文を投げる。 こんな負荷分散を1台のサーバーで行う必要が出てきた。 現在1台でやっていて、ディスクIOが追いつかずに捜し求めた結果、下の形で落ち着いた。 1つのテーブルでインデックスを含めたサイズが 30MB〜100MBほどで安定している、という条件があるのですが かなり負荷下がります。 ※上記サイズは搭載メモリサイズによって変わります -------------------------- ■やりかた 負荷が高いテーブルをAとする 1:Aと同じテーブル構成で、エンジンをMEMORY(he

  • MySQL負荷分散のまとめ - Life on the net

    はてぶで人気エントリーになっていた、 http://kokoromo.jugem.cc/?eid=195 [MySQL:1台しかない環境で負荷分散] これは負荷分散=スケールアウトというよりは一台でスケールアップしてしのぐ手段を書いてい。 だから負荷分散という言葉は必ずしも正しくないのだが、一つのテーブルへの付加集中を分散させるという事なのだろう。 そこで何パターンかあるMySQLの負荷分散を簡単にまとめてみる。 1. 富豪的分散 商用のクラスター製品を使う。 最近はMySQL専門のクラスター製品が出てきている。 http://www.continuent.jp/pro.html なんかは良いかなと思う。 長所: プログラム側ではクラスタ状態を何の意識もせず、一つのターゲットに対してクエリーを発行すれば良い。 ターゲットが複数台ある事は意識する事は無い。 不具合があるノードに生じた場合、他

    MySQL負荷分散のまとめ - Life on the net
    iww
    iww 2006/03/26
  • 1