タグ

tipsとMySQLに関するteddy-gのブックマーク (14)

  • MySQLでDATETIME型の時刻差を計算 - 地中へのはしご

    MySQL上で、DATETIME型の時間差を出す方法です。 僕の場合、出した値を合計して、その後PHPで扱う流れでしたので、UNIX_TIMESTAMPで変換してから差を出す方法を採用しました。 複数の方法で結果を出してみる 左2つのデータの差分を、カラム名の方法で出しています。 そのまま減算 数字列の差分になります。 SELECT datetime1 - datetime2 FROM table_name UNIXTIMESTAMP化してから計算 秒数で取得できます。 SELECT UNIX_TIMESTAMP( datetime1 ) - UNIX_TIMESTAMP( datetime2 ) FROM table_name SUBTIME()で計算 後ろの引数は時刻ではなく時間を表す値でなければならないようです。 SELECT SUBTIME(datetime1,datetime2)

    teddy-g
    teddy-g 2015/11/08
    MySQLで日付型計算するときはUNIX_TIMESTAMP
  • phpMyAdminでSQLファイルのアップロードサイズ制限を変更する

    phpMyAdmin で SQL ファイルをインポートする際に許容されるサイズ制限を変更する方法を段階的に説明するチュートリアル。 大規模なデータベースをインポートする必要がある場合に役立ちます。 phpMyAdminでSQLファイルのアップロードサイズ制限を変更します。 我々は、で動作する場合 データベースほとんど私たちに到達です phpMyAdminの、Web インターフェイスを介してデータベース管理サポートを提供します。 phpMyAdmin から、アクセスできるデータベースに必要な変更を加えることができます。 データベースを追加したり、データベース内のテーブルを作成、削除、編集したり、削除したりできます。 インポート·データベースを維持. 標準構成では(default) 関数 "インポート"で phpMyAdminの、私たちは内にアップロードしないようにしてください MySQL 2

    phpMyAdminでSQLファイルのアップロードサイズ制限を変更する
    teddy-g
    teddy-g 2015/10/31
    phpMyAdminに巨大なデータをインポートするときはphp.iniのmemory_limit、upload_max_filesize、post_max_sizeの3か所を変える。なにこれ自動翻訳?
  • phpMyAdmin のアップロードファイルサイズを変更する

    MySQL + phpMyAdmin によるバックアップで「phpMyAdmin によるバックアップファイルのアップロードサイズに制限がある」と書きましたが、自宅サーバ(Apache)等、管理者権限があれば、このサイズを簡単に変更することができます。 変更前のサイズは2048KBです。 この最大サイズを変更するには、php.ini にある下記の行 php_value upload_max_filesize 2M の赤色部分を次のように修正します。 php_value upload_max_filesize 8M これで Apache を再起動すると、最大サイズが変更されます(例は8192KB)。 さらにサイズを拡大する場合は、php.ini の memory_limit post_max_size upload_max_filesize の関係が memory_limit > post_m

    teddy-g
    teddy-g 2014/10/05
    アップロードファイルサイズは確かに変更できた。若干の不安が何となく残る。
  • テーブルを複製して新しいテーブルを作成する(CREATE TABLE LIKE文、CREATE TABLE SELECT文)

    テーブルを複製して新しいテーブルを作成する(CREATE TABLE LIKE文、CREATE TABLE SELECT文) MySQL では CREATE TABLE LIKE 文または CREATE TABLE SELECT 文を使用することで既存のテーブルを複製して新しいテーブルを作成することができます。ここでは MySQL で作成済みのテーブルを複製して新しいテーブルを作成する方法について解説します。

    テーブルを複製して新しいテーブルを作成する(CREATE TABLE LIKE文、CREATE TABLE SELECT文)
    teddy-g
    teddy-g 2014/07/17
    サブクエリ。クエリから新しいテーブルを作る。
  • MySQLのテキストにはVARCHAR型と?TEXT型のどちらを使うべきか?

    MySQLのテキスト型にはVARCHARと?TEXT(TINYTEXT、TEXT、MEDIUMTEXT、LONGTEXT)がある。長さの制限が違うだけで、どれを使ってもテキストを格納することはできる。だけどおそらく特性には違いがあるに違いない。プログラミングを実践する上でどのテキスト型を使うのが適切なのか判断できるように、これらの違いについて理解しておきたい。 ざっくりググってみると、テキスト型の違いを論じているページがいろいろ見つかる。 Takahiko HORIUCHI – Google+ – RDBMSMySQL を採用したシステムで、VARCHAR の代わりに TEXT… https://plus.google.com/113405959631093302363/posts/E4tDXucskqb VARCHAR と ?TEXT の違い – ngの日記 http://ng

    teddy-g
    teddy-g 2014/07/15
    結局VARCHARとTEXTを使い分ける論理的な根拠はあんまりなかった。
  • ks2.info

    ks2.info 2024 著作権. 不許複製 プライバシーポリシー

    teddy-g
    teddy-g 2014/07/15
    BLOB、TEXT、CHAR、VARCHARあたりの使い分けに就いて
  • 運用視点なMyISAMとInnoDBと。 – LexTech

    MySQL5.5からトランザクション処理ができるInnoDBがデフォルトストレージとなりましたし、とりあえずInnoDBにしとこうという風潮から、ストレージがInnoDBであることも多いのですが、実は蓋を開けて見るとまだまだMyISAMで動いているサービスがたくさんあります。今回は運用面から見た両者の違いをみてみたいと思います。 同じMySQLですが、InnoDBの運用とMyISAMの運用は注意するポイントが違います。 ロック方式 一番大きい違いはロック方式の違いでしょうか。InnoDBは行ロック方式(*1)、MyISAMはテーブルロック方式です。データをINSERTやUPDATEする時はセマフォ制御のためロックされますが、その時の挙動が違います。 たとえばUPDATEのクエリを投げると、MyISAMの場合は対象テーブル全体がロックされ、その後のクエリが”詰まり”ます。なので重いクエリを発

    teddy-g
    teddy-g 2014/07/15
    MyISAMとInnoDBならやはりInnoDBと。辞書データみたいなのはどっちにすべきかねえ。
  • MySQLのgroup_concatの結果が短い気がするのは環境変数で制限されているから。

    少し前のことですが、「IDの一覧出したくてgroup_concatしたのだけど、結果がおかしいです」と聞かれまして、たぶんみんな一回は経験することのような気がするので書いておきます。 MySQLのgroup_concatというのは集約関数の一つで、複数のレコードの値を、区切り文字を入れながら文字列結合するというものです。 group_concatの結果が短い気がする こんなクエリ書く人いないかもしれませんが、「全ユーザーIDをランダムな順番でコンマ区切りで取得したい」という狙いで以下のクエリを実行しました。 mysql> select group_concat(id order by rand()) as user_ids from user\G *************************** 1. row *************************** user_ids:

    MySQLのgroup_concatの結果が短い気がするのは環境変数で制限されているから。
    teddy-g
    teddy-g 2014/02/26
    group_concatの最大長は環境変数で制限されてるので、長い纏まりをつくるときは制限を解除する必要あり。
  • MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ

    実は非常に有用で、この機能が実は欲しかった!と言う方が続出する機能なのですよね〜 全然知らなかったのですが、mysqlでは複数レコードを1行にまとめる事ができます。 複数行をカンマ区切りにしたり、結構有効に使えそうです。 テーブル・データの準備 テーブル データ 実際に実行してみる 普通にselectしてみる group_concatしてみる group_concat + distinct group_concat + group by テーブル・データの準備 早速サンプルコードを。 テーブル mysql> create table gc1(id int auto_increment, uid int, name varchar(30), primary key(id))engine=innodb charset=utf8mb4; Query OK, 0 rows affected (0.

    MySQLのgroup_concatで複数レコードを1行にまとめる - 文系プログラマによるTIPSブログ
    teddy-g
    teddy-g 2014/02/26
    group_concatを使うと複数レコードをカンマ区切りのひとつの値に変換できたりする。どっかで使いそう。
  • MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary

    MySQL に限らず、SQL のNULL の仕様には何回か「えっ」と驚くことがあったのでメモしておこうと思います。5.1 版の日語マニュアルがなかったものについては、4.1 のマニュアルを参照しました。 そもそもNULL は何を意味するか NULL は未定義または、不明を意味する。「電話番号を持たない」ということを表現する場合は、NULL ではなく、空の文字列を使う。 NULL 値というものを SQL 初心者はよく混乱します。SQL 初心者は、多くの場合、NULL が空文字 "" と同じであると考えてしまいます。これは違います。たとえば、以下のステートメントは完全に別のものです。 mysql> INSERT INTO my_table (phone) VALUES (NULL); mysql> INSERT INTO my_table (phone) VALUES (""); どちらのス

    MySQL のNULL ではまったことあれこれ - LukeSilvia’s diary
    teddy-g
    teddy-g 2014/02/21
    NULLと''は違うのよね
  • nullと同じく空白をCountしない方法は? - OKWAVE

    空白ってなに?とまず突っ込まれる内容ですね キチンと型指定すれば空白はないとおもいますが create table hoge(id int not null default 0 primary key,data int null); insert into hoge value(1,1),(2,3),(3,''),(4,null),(5,null),(6,0); この場合、空白は0です そこで拡大解釈して0もカウントしないという命題だとすると 一般的にはsumを使う場合とcountをつかう場合があります (1)select sum(data is not null and data!=0) from hoge; →dataがnullじゃないかつdataが0じゃないものをカウントするのにsumをつかいます (2)select count(if(data=0,null,data) ) from

    nullと同じく空白をCountしない方法は? - OKWAVE
    teddy-g
    teddy-g 2014/02/21
    IF使って0をnullにしてあげればCOUNTでカウントできる。さもないと0はカウントされちゃう。
  • MySQLの超遅いSELECTが劇的に早くなった | X->A->O

    CakePHPはよく触っていたものの、MySQLについてあまり知らなかったんですが、大規模なデータベースを扱ってみようと思い立ちいろいろ試行錯誤しています。 で、ついさっき感動したのが、40万件のレコードを扱ってるテーブルに簡単なSELECT分を投げて返ってくる時間がなんと5秒もかかっていて、なんじゃこりゃ?って首をかしげてたんですが、INDEXひとつで劇的に早くなったこと。 40万件が大規模かそうでないかはこの際おいておいて、INDEXのつけ方次第でこんなにも速度に変化があるのかと涙が出そうになった。 最初の激遅いテーブルは簡単に書くとこんな具合。 CREATE TABLE IF NOT EXISTS `shops` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(255) NOT NULL, `status

    teddy-g
    teddy-g 2013/06/21
    インデックス作成するときにはWHERE句と同じ順番にしないと意味がない。インデックスは1テーブルに就き1個だから重要。
  • MySQLでBLOB/TEXT型カラムにインデックスを張る | dTblog | デザインとプログラムの境界をさまようブログ

    MySQL で新たにテーブルを作ったり、プライマリキー、ユニーク制約、またはインデックスを作成する際、下記のようなエラーが発生することがあります。 ERROR 1170 (42000): BLOB/TEXT column 'text_field' used in key specification without a key length 結論として回避策から書くと、BLOB型またはTEXT型の場合は、インデックス作成時にキー長を明示してあげる必要があります。 create index new_index on table_name(text_field(100)); このエラーは、MySQLBLOB型もしくはTEXT型 (これらに順ずる TINYTEXT型 や LONGTEXT型を含む)のような可変長カラムでは、その先頭から最大255文字分しかインデックスできないという制約から来て

    teddy-g
    teddy-g 2013/06/21
    BLOB/TEXT型にインデックス張る場合はキー長を()で設定すると。
  • インデックスの作成・削除・情報表示・追加|インデックス:データ定義(SQL文)|MySQL|PHP & JavaScript Room

    CREATE TABLE テーブル名(カラム名 型,カラム名 型, ... INDEX(カラム名); または CREATE INDEX インデックス名 ON テーブル名(カラム名); または ALTER TABLE テーブル名 ADD INDEX インデックス名(カラム名); 検索するデータ量が多い場合など、検索対象のカラムにインデックスを作成しておきましょう。 インデックスを作成しないと、検索対象のカラムのデータを全部検索するため、データベースに負担がかかりすぎ落ちることもあります。 インデックスを作成しておけば、カラムに設定されたインデックスを検索するので、データベースの負担も軽減し、なおかつ検索効率がアップします。 主キーを設定したカラム名には、自動的にインデックスが作成されますので、あえて作成する必要はありません。 データベース作成時のCREATE TABLE文でインデックス作成

    インデックスの作成・削除・情報表示・追加|インデックス:データ定義(SQL文)|MySQL|PHP & JavaScript Room
    teddy-g
    teddy-g 2013/06/21
    インデックス作成したら死ぬほど速くなった。
  • 1