« やる夫がサーバのアドレスを変更するようです。 | トップページ | Linuxでやる夫 »

2008-02-28

[mysql] やる夫がselect結果の量に困っているようです。

select結果の制限

データ数がすくなければ特に問題ないのですが、10万件とか膨大なデータをあつかっているDBで、安易に”select * from [table_name]”でも打とうものなら・・・。ぁああああってなりますね。そんなときに、”limit”が役立ちます。

         ____
       /::::::::::  u\  
      /:::::::::⌒ 三. ⌒\     ・・・っちょ・・・・おま・・・
    /:::::::::: ( ○)三(○)\          とまらないお・・・
    |::::::::::::::::⌒(__人__)⌒  | ________
     \::::::::::   ` ⌒´   ,/ .| |          |
    ノ::::::::::u         \ | |          |
  /:::::::::::::::::      u       | |          |
 |::::::::::::: l  u             | |          |
 ヽ:::::::::::: -一ー_~、⌒)^),-、   | |_________|
  ヽ::::::::___,ノγ⌒ヽ)ニニ- ̄   | |  |

やる夫が、”select * from yauro_table”を叩いたようです。

      / ̄ ̄\   
    /ノ( _ノ  \    DBあつかうときは慎重にやれっていってんべ!
    | ⌒(( ●)(●)
    .|     (__人__) /⌒l
     |     ` ⌒´ノ |`'''|
    / ⌒ヽ     }  |  |              
   /  へ  \   }__/ /             / ̄ ̄\   データが多・・・
 / / |      ノ   ノ           / ●)) ((●\’, ・ 
( _ ノ    |      \´       _    (   (_人_)’∴ ),  ’
       |       \_,, -‐ ''"   ̄ ゙̄''―---└'´ ̄`ヽ   て
       .|                  ______ ノ    (
       ヽ           _,, -‐ ''"  ノ       ヽ   r'" ̄
         \       , '´        し/..     | J
          \     (           /      |
            \    \         し-  '^`-J

            / ̄ ̄\
          /   _ノ  \
          |    ( ●)(●)
          |     (__人__)  
             |     ` ⌒´ノ   limit くらい使っとけよ・・・
              |         }       ほらサンプルSQLやるよ・・・
              ヽ        }
            ヽ、.,__ __ノ
   _, 、 -― ''"::l:::::::\ー-..,ノ,、.゙,i 、
  /;;;;;;::゙:':、::::::::::::|_:::;、>、_ l|||||゙!:゙、-、_
 丿;;;;;;;;;;;:::::i::::::::::::::/:::::::\゙'' ゙||i l\>::::゙'ー、
. i;;;;;;;;;;;;;;;;;;;;;;|::::::::::::::\::::::::::\ .||||i|::::ヽ::::::|:::!
/;;;;;;;;;;;;;;;;;;;;;;;;!:::::::::::::::::::\:::::::::ヽ|||||:::::/::::::::i:::|

# myql
mysql> select [column_name] from [table_name] limit 10;

  • limit [n] でデータ出力数を指定できます。上記例だと上から10行まで出力されます。

         ____
       /      \  
     /  _ノ  ヽ、_  \   テキストにSQLをメモッてコピペするお・・・。
    / o゚((●)) ((●))゚o \  
    |     (__人__)    |  
    \     ` ⌒´     /
   /´           `\
  /  /          l  l   .___
__l  l_¶______/_/__/     ヽ
  \, ´-'ヽ  ̄| ̄ ̄ ̄ ̄|   l二二二二l
    ヾ_ノ   | '''' '   |   l二二二二l
   | 9=ε-8. | '''..--  |   l二二二二l:::..
   |   ..''  |  ''-.  ,|

ちょっと応用

下記例では、”neet_id”と”neet_name”を出力するようにして、先頭に”y”が付くものを、ソートしかつ10件まで表示するというSQLサンプルです。

  • 同でも良いが、会員数200万以上って、すごいシステムだな・・・。

# mysql
mysql> select neet_id, neet_name from yaruo_tb where neet_name like 'y%' order by neet_name limit 10;
+----------+------------------+
| neet_id  | neet_name        |
+----------+------------------+
|  2410554 | yaranaio         |
|   208231 | yarumi           |
|  3216603 | yaruo            |
|   121868 | yaruo_test       |
|   822554 | yaruo_test01     |
|  2158770 | yen              |
|     2382 | yneet            |
|   896892 | yne              |
|    71881 | yyy              |
|    54640 | yz_neet          |
+----------+------------------+
10 rows in set (0.04 sec)

  • like ワイルドカード(っと思っている)
  • order by ソート
  • limit 出力制限

正直抑えておいた方がよいです。延々とSQLの出力結果がトレースされてるとちょっとだけかっこ悪いです。

----------------------------------------
現場で使える MySQL (DB Magazine SELECTION)
松信 嘉範
翔泳社翔泳社翔泳社
定価 : ¥ 2,730
2006-03-17
amazonで詳しく見る

|

« やる夫がサーバのアドレスを変更するようです。 | トップページ | Linuxでやる夫 »

MySQL」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/488651/10810134

この記事へのトラックバック一覧です: [mysql] やる夫がselect結果の量に困っているようです。:

« やる夫がサーバのアドレスを変更するようです。 | トップページ | Linuxでやる夫 »