タグ

SQLに関するchanpon0のブックマーク (47)

  • SQL*Loader の使い方 - オラクル・Oracleをマスターするための基本と仕組み

    SQL Loader (SQL ローダ) ユーティリティの使用方法 SQL Loader 概要 SQLLoader を使用することで外部ファイルに記述されている制御ファイルと一定の書式で記述されたデータレコードのみの大量のテキストデータ(※)を効率よく高速にデータベースの表にローディングすることができる。 (※) テキスト形式だけではなく、Native な型のデータや LOB 型のデータもコントロールファイルの設定によってローディングすることが可能。 SQL Loader の主な特徴 ダイレクト・パス API を使用した高速なデータのローディング(ダイレクト・パス・インサート) 複数のデータファイルからのパラレルロード 漢字コード(キャラクタセット)の変換 SQL 関数、ユーザー関数、シーケンスなどを使用してデータの生成、合成、変換が可能 不適格データの排除とレポート、ログ SQL Loa

  • 表の結合を極めるチューニング・テクニック

    連載では、Oracleデータベースのパフォーマンス・チューニングの中から、特にSQLのチューニングに注目して、実践レベルの手法を解説する。読者はOracleデータベースのアーキテクチャを理解し、運用管理の実務経験を積んでいることが望ましい。対象とするバージョンは現状で広く使われているOracle9iの機能を基とするが、Oracle 10gで有効な情報も随時紹介していく。(編集局) 連載目次 前回までは、索引に関するチューニング・テクニックを説明しました。今回からは表の結合に関するパフォーマンス向上方法を考えてみます。結合処理は、正規化されたデータベースでは、必ず必要になる処理であり、パフォーマンスが問題となりやすい部分でもあります。ここでは、参照する表の件数、絞り込み条件の有無などを変更し、結合の種類によって処理時間、アクセスブロック数などがどのように変わるか、実例を挙げて説明していき

    表の結合を極めるチューニング・テクニック
  • SQLの暗黙の型変換はワナがいっぱい

    補足 この記事は旧徳丸浩の日記からの転載です。元URL、アーカイブはてなブックマーク1、はてなブックマーク2。 備忘のため転載いたしますが、この記事は2009年9月24日に公開されたもので、当時の徳丸の考えを示すものを、基的に内容を変更せずにそのまま転載するものです。 補足終わり このエントリでは、SQLにおいて「暗黙の型変換」を使うべきでない理由として、具体的な「ワナ」をいくつか紹介します。 数値項目に対するSQLインジェクション対策のまとめにて説明したように、RDBの数値型の列に対してSQLインジェクション対策をする方法として、以下の三種類が知られています。 バインド機構を用いる パラメータの数値としての妥当性確認を行う パラメータを文字列リテラルとしてエスケープする このうち、方法3を使うべきでない説明の補足です。具体的には、方法3には、「暗黙の型変換」が発生しますが、それが思わ

    chanpon0
    chanpon0 2015/12/10
    castまでする必要があるか。。
  • Sublime Text でSQLを整形する - Qiita

    改行などが全くない長〜いSQLは、Sublime Text のプラグイン SQL Beautifier を使って読みやすく整形できます。 ※同様の用途で FormatSQL というプラグインもありますが、こちらは私の環境ではうまく動きませんでした。 使い方 Sublime Text にプラグイン SQL Beautifier をインストールします。 整形したいSQLを Sublime Text に貼り付けます。 super+k, super+f キーを押します。(Windows/Linux だと ctrl+K, ctrl+f) できあがり こんな感じに整形されます 使用前

    Sublime Text でSQLを整形する - Qiita
  • ネステッド・ループ結合 - オラクル・Oracleをマスターするための基本と仕組み

    ネステッド・ループ結合 (NESTED LOOP JOIN) ネステッドループ結合とは、もっとも基的な結合である。例えば2つの表におけるネステッドループ結合を2重ループした繰り返し処理のプログラムを想像するとシンプルに理解できる。 SELECT t1.colA, t2.colB FROM t1, t2 WHERE t1.key1 = t2.key2 and t1.colA = 'A' and t2.colB = 'B' という SQL について考えてみる。 テーブル t1 は配列 a1、テーブル t2 を配列 a2 と置き換えると 探索する アルゴリズム (A) は 準備 変数 conditionA に条件 'A' を代入する 変数 conditionBに条件 'B' を代入する 変数 conditionA、conditionB を引数に以下の処理を呼び出す 処理の内容 配列 a1 を

    chanpon0
    chanpon0 2014/10/16
    NLJ(Nested loop join)
  • SQLでorder byとgroup byを併用する時の書き方 - まんとるぽっと

    珍しくSQL書いてたら詰まったのでメモしておきます。 やりたいこと どばーっとデータが貯まっているテーブルがあったとして。例えば色んなユーザのアクセスログが貯まっているテーブルを想定します。その中から各ユーザの最新アクセス情報を取りたい時にどうするか。 「dateでorder byしてから、group byすればいいんじゃないの?」と思ってたんすけど、どうやらこの2つは併用すると先にgroup byされてその結果がorder byされるそうな。そういう仕様らしい…。以下の記事が参考になりました。 Mysqlのサブクエリとgroup、orderの優先度 – Life order byとgroup byを併用する時のサブクエリ じゃあ、サブクエリでdateでorder byした結果に対してgroup byしたらええやんと言う話になりまして、具体的にはこんな感じになりました。内容は変数名を見て察

    SQLでorder byとgroup byを併用する時の書き方 - まんとるぽっと
    chanpon0
    chanpon0 2014/04/08
    ある項目で並べた最初のレコードだけgroup by して出力したい。
  • Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT

    平素よりQA@ITをご利用いただき、誠にありがとうございます。 QA@ITは「質問や回答を『共有』し『編集』していくことでベストなQAを蓄積できる、ITエンジニアのための問題解決コミュニティー」として約7年間運営をしてきました。これまでサービスを続けることができたのは、QA@ITのコンセプトに共感をいただき、適切な質問や回答をお寄せいただいた皆さまのご支援があったからこそと考えております。重ねて御礼申し上げます。 しかしながら、エンジニアの情報入手方法の多様化やQAサービス市場の状況、@ITの今後のメディア運営方針などを検討した結果、2020年2月28日(金)15:00をもちましてQA@ITのサービスを終了することにしました。 これまでご利用をいただきました皆さまには残念なお知らせとなり、誠に心苦しく思っております。何とぞ、ご理解をいただけますと幸いです。 QA@ITの7年間で皆さまの知識

    Rails で、Controller に定義されている action を一度に取得する方法はありますか? - QA@IT
    chanpon0
    chanpon0 2014/01/24
    select update 前川様の方法で。
  • MySQLでVIEWを使うメリットを教えてください。 - MySQLをよく使っています。MySQL5あたりからVIEWが使える... - Yahoo!知恵袋

    メリットは単純でSQL文がすっきりします。 create view AB as select * from A join B using (ABkey); と生成すれば ①select * from A join B using (ABkey) とかくところ ②select * from AB ですみます。 速度については状況次第ですが、期待できないと思っています。 私が5.1で使用した場合、同じor遅い、という結果でした。 view構築時にアルゴリズムというオプションがあるのですが、 ALGORITHM = MERGE:SQLを展開する(先の例では②を実行すると①として実行される。記述が簡略化できる) ALGORITHM = TEMPTABLE:一時表を作成する ALGORITHM = UNDEFINED:MERGEかTEMPTABLEか自動選択 となっています。 MERGEが速度面の効

    MySQLでVIEWを使うメリットを教えてください。 - MySQLをよく使っています。MySQL5あたりからVIEWが使える... - Yahoo!知恵袋
  • 【SQL】重複した行を取り出す

    --テーブルからフィールドAの値が重複しているデータを取り出す。 --手順: --①GROUP BYでフィールドAを指定し、HAVING句を用いて -- COUNT()の結果が2以上のデータのリストを取得する。 -- 例)リストの取得方法 SELECT [key] FROM [test].[dbo].[tbl_union1] GROUP BY [key] HAVING COUNT([key])>1 --②①で取得したリストに入っているデータをテーブルから取得する。 SELECT [key] FROM [test].[dbo].[tbl_union1] WHERE [key] in (SELECT [key] FROM [test].[dbo].[tbl_union1] GROUP BY [key] HAVING COUNT([key])>1) 【結果】 key ---------- uni

    chanpon0
    chanpon0 2012/06/18
  • category/データベース/MySQL - ペンギンの杜 〜 Linux ソフト集 〜

  • フリーソフト データベース開発の必需品 黒猫 SQL Studio : SEが薦める役に立つフリーソフト&ソフト

    SEが薦める役に立つフリーソフト&ソフト 無料のフリーソフトから有料のソフトウェアまで様々なソフトが豊富に存在します そこでSEオススメの役に立つソフト&情報を紹介! このサイトを見ていてくれている人の中でデータベースに関わってい人はどれぐらいるでしょうか?筆者もSqlServer ORACLE MySQL Accessなどさまざまなデータベースを使用します(最近はSqlServerがほとんどですが・・・汗)大体データベースごとにさまざまな便利な開発環境がついており便利にSQLを作成し実行することができるのですが、開発環境がインストールされていなかったりMSDEのようなそもそも開発環境が存在しないデータベース環境で作成が必要なことがしばしばあります。もちろん「コマンド プロンプト」を使用しコマンドで作業することは可能なのですが、便利な環境で作成し実行することになれた筆者のような人間には苦痛

    フリーソフト データベース開発の必需品 黒猫 SQL Studio : SEが薦める役に立つフリーソフト&ソフト
  • prepareメソッド - PDOの利用 - PHP入門

    prepareメソッドはqueryメソッドと似たような機能を提供しますが、SQL文の基部分が同じで値だけ異なるような場合(例えば同じテーブルに値だけ変えて何回もデータを挿入するような場合です)に効率よく行える機能を提供してくれます。 PDO::prepare PDOStatement PDO::prepare ( string statement [, array driver_options] ) PDOStatement::execute() メソッドによって実行される SQL ステートメントを 準備します。 SQL ステートメントは、文が実行されるときに実際の値に置き換 えられる 0 個もしくはそれ以上の名前 (:name) もしくは疑問符(?) パラメータ マークを含むことができます。 名前と疑問符パラメータを同一 SQL ステートメ ント中で使用することはできません。 どちらか

  • Create it! | MySQL-フィールドの改行を削除

    PHP、AJAX、CodeIgniter,Javascript、XHTMLCSSSEO,アフェリエイト、WEBならなんでも来い。 << August 2008 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 >>

  • 『MySQLのUNION構文とかで試行錯誤したメモ』

    掲示板(でもなんでもいいが)を作るにあたり、たとえば以下のようにテーブルをくっつけてから記事を取得する。 mysql> (SELECT id, user, message, create_date FROM BBS_MESSAGE) -> UNION -> (SELECT id, user, message, create_date FROM BBS_REPLY) -> ORDER BY create_date DESC -> LIMIT 0, 5 -> ; この場合、「記事数」を取得するにはどうすればいいか? 最初に試したのが以下のSQLmysql> SELECT count(*) FROM ( -> (SELECT id FROM BBS_MESSAGE) -> UNION -> (SELECT id FROM BBS_REPLY) -> ); これは失敗する。 ERROR 124

    『MySQLのUNION構文とかで試行錯誤したメモ』
    chanpon0
    chanpon0 2011/04/06
    テーブルをまたいでデータをcount。重複は省く。前にもやったなー、こんなこと。。
  • カラムを追加する方法【MySQL】 - Programming Magic

    MySQLでは以下のようなクエリーでカラムを追加することができる。 ALTER TABLE <テーブル名> ADD <カラム名> <型情報>; ALTER TABLE test ADD name varchar(255); ALTER TABLE test ADD num int unsigned; ALTER TABLE sample ADD address varchar(1023) NOT NULL; また、以下のようにカラムを追加する位置を指定することもできる。 ALTER TABLE <テーブル名> ADD <カラム名> <型情報> AFTER <カラム名>; ALTER TABLE <テーブル名> ADD <カラム名> <型情報> FIRST; ALTER TABLE test ADD comment text AFTER name; ALTER TABLE test ADD

    chanpon0
    chanpon0 2011/04/06
    alter tableで位置指定して項目追加(挿入)
  • 基礎から理解するデータベースのしくみ(5):ITpro

    SQL文を実行する際のパフォーマンスに大きな影響を及ぼすものとして,もう一つ,インデックスがあります。インデックスについては,どう定義すべきかというデータベース設計上の問題と,インデックスを有効に使うためのSQL文をどう書くべきかというコーディング上の問題があります。 ここではテーブル設計上の問題を主に取り上げます。SQL文のコーディングについては囲み記事「SQL文を最速にする11のポイント」を参照してください。 インデックスは,テーブルの検索速度を向上させるためのものです。それぞれのSQL文に対して最適なインデックスを定義するのが理想的ですが,実際にはある程度限られたインデックスで,必要なパフォーマンス要件を満たすようにインデックスを定義する必要があります。加えて,どんなSQL文が実際に発行されるのかがあらかじめわかっていない場合は,適当な想定に基づいてインデックスを定義しておかなくては

    基礎から理解するデータベースのしくみ(5):ITpro
  • MySQL :: MySQL 8.0 リファレンスマニュアル :: 12.8.2 正規表現

    正規表現は、複雑な検索でパターンを指定する強力な方法です。 このセクションでは、正規表現の照合に使用できる関数と演算子について説明し、正規表現の操作に使用できる特殊文字と構造の一部を例とともに示します。 セクション3.3.4.7「パターンマッチング」も参照してください。 MySQL では、Unicode の国際コンポーネント (ICU) を使用した正規表現サポートが実装されています。ICU は完全な Unicode サポートを提供し、マルチバイトセーフです。 (MySQL 8.0.4 より前では、MySQL は Henry Spencer による正規表現の実装を使用していました。これはバイト単位で動作し、マルチバイトセーフではありません。 正規表現を使用するアプリケーションが実装の変更の影響を受ける方法の詳細は、正規表現の互換性に関する考慮事項 を参照してください。) expr NOT R

    chanpon0
    chanpon0 2011/03/11
    sqlで正規表現書けんのか。知らなんだ。。
  • MySQLの最適化 | 株式会社フォレスト・コンサルタンツ

    01/13 Re2:「福沢諭吉の正体」-補足1-東大話法の元祖(山根治) 01/13 Re1:「福沢諭吉の正体」-補足1-東大話法の元祖(Kan Yabumoto) 01/07 Re6: ホリエモンの弁解術 -1(Smitha695) 01/07 Re1:謹んで新年のご挨拶を申し上げます(須増) 12/01 Re25: 倉田まり子事件の真相 -その3(ナマナマ) ※以前別の場所で書いた文章を備忘的に書き記しておきます。 処理速度改善等にあたって実施したMySQLの最適化についてメモ的に残しておきます。大量のデータを扱うSQLスクリプトを記述する際、役に立つかもしれません。 可能な限りSQL文は後から一括して実行。 LIMITを使い、呼び出すレコード数を制限。 SELECT等においてフィールドを呼び出す際、インデックスがあるものを優先して指定。 ソートする場合はインデックスがあるフィールドを

    chanpon0
    chanpon0 2011/01/27
    マルチプルinsert 最後の文字削除
  • BIGLOBEなんでも相談室サービス終了のお知らせ

    なんでも相談室 サービス終了のお知らせ 平素よりBIGLOBEをご利用いただき誠にありがとうございます。 BIGLOBEなんでも相談室はサービスを終了いたしました。 これまでご愛顧いただき誠にありがとうございました。 今後はBIGLOBEなんでも相談室のデータ提供元であるオウケイウェイヴ社の「OKWAVE」をご利用ください。 なおBIGLOBEなんでも相談室に会員登録されていた方は、登録されていたOKWAVE IDを利用して「OKWAVE」にログインすることができます。 ログインに必要なパスワードは12月2日にオウケイウェイヴ社から登録メールアドレス宛にメールで通知されます。当日はメールの到着までお待ちください。 12月3日になってもメールが来ない場合は下記ページからお問い合わせください。(オウケイウェイヴ社のページに移動します) パソコン版 https://secure.okbiz.ok

    chanpon0
    chanpon0 2010/12/28
    [try/catch]
  • サービス終了のお知らせ

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    chanpon0
    chanpon0 2010/12/02
    速度 速さ