私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2

みんなの評価 :
レスフィルター : (試験中)
まず、current_timestampが返す型はtimestamp型だ
この関数はデフォルト値には使えるが当然カラムがなかなか無茶苦茶な発想に見えるのだが
timestamp型じゃないとダメ。
なのでここでまず無理
逆に言えば通常の関数はデフォルト値には使えない。
デフォルト値はあきらめたとしてさらにintにしたいんだろ?
unixタイムスタンプというのは一秒単位なわけで、
current_timestampよりはかなり精度が落ちる
ということは情報を切り捨てなけりばならないか、datetimeのnow関数を元の値にして unix_timestamp関数で更新時に埋め込んだとする。
しか主キーと言うことは当然ユニークでなければならないが、一秒単位でかぶらないという保証はあるの?
ていうか、かぶったらエラーにしたいってこと?
なかなか無茶苦茶な発想に見えるのだが、
なぜシーケンスじゃダメ?
なぜ主キーじゃないとダメ?
なぜunixタイムスタンプ?
この関数はデフォルト値には使えるが当然カラムがなかなか無茶苦茶な発想に見えるのだが
timestamp型じゃないとダメ。
なのでここでまず無理
逆に言えば通常の関数はデフォルト値には使えない。
デフォルト値はあきらめたとしてさらにintにしたいんだろ?
unixタイムスタンプというのは一秒単位なわけで、
current_timestampよりはかなり精度が落ちる
ということは情報を切り捨てなけりばならないか、datetimeのnow関数を元の値にして unix_timestamp関数で更新時に埋め込んだとする。
しか主キーと言うことは当然ユニークでなければならないが、一秒単位でかぶらないという保証はあるの?
ていうか、かぶったらエラーにしたいってこと?
なかなか無茶苦茶な発想に見えるのだが、
なぜシーケンスじゃダメ?
なぜ主キーじゃないとダメ?
なぜunixタイムスタンプ?
>>605
ありがとうございます。
想像以上にややこしいようで、すいませんでした
まずは、慣れ親しんだ2chモドキを作ってみたいというのが大元でした
大昔に2chブラウザも作ったことがあるので、ちょっとぐらいは理解しているというのもあり、
またゴールがみえているのでとりあえず真似して作ってみたいと思いました。
>なぜシーケンスじゃダメ?
これもすいません、質問の意味があまりわかっていないです。
しかし、主キーにせざるを得ない状況、というの物はありません。
>なぜ主キーじゃないとダメ?
>なぜunixタイムスタンプ?
時間は必ず加算され続けるので、一意にならない
仮になったとしても、それはそれで得るものがあるかなと思いました
スレ番号がunix時間とのことだったので調べたところ、
intにすればそこそこ
真似してみようと思ったのですが、
もしかして主キーはunix時間じゃないのでしょうか
ありがとうございます。
想像以上にややこしいようで、すいませんでした
まずは、慣れ親しんだ2chモドキを作ってみたいというのが大元でした
大昔に2chブラウザも作ったことがあるので、ちょっとぐらいは理解しているというのもあり、
またゴールがみえているのでとりあえず真似して作ってみたいと思いました。
>なぜシーケンスじゃダメ?
これもすいません、質問の意味があまりわかっていないです。
しかし、主キーにせざるを得ない状況、というの物はありません。
>なぜ主キーじゃないとダメ?
>なぜunixタイムスタンプ?
時間は必ず加算され続けるので、一意にならない
仮になったとしても、それはそれで得るものがあるかなと思いました
スレ番号がunix時間とのことだったので調べたところ、
intにすればそこそこ
真似してみようと思ったのですが、
もしかして主キーはunix時間じゃないのでしょうか
すいません、かきこんでしまいました・・・
>なぜunixタイムスタンプ?
時間は必ず加算され続けるので、一意にならない
仮になったとしても、それはそれで得るものがあるかなと思いました
後は書き込み時間と主キーが同じなら、
書き込み時間をカラムとして保存するよりもデータ圧縮にもなるかな?と思ったのです
スレ番号がunix時間とのことだったので調べたところ、
intにすればそこそこ早いというので試してみたかったというのもあります
後は2chを全体的に真似してみようと思ったのですが、
もしかして主キーはunix時間じゃないのでしょうか
やはり主キーは普通に1から順にして、auto_incrementにすべきでしょうか
>なぜunixタイムスタンプ?
時間は必ず加算され続けるので、一意にならない
仮になったとしても、それはそれで得るものがあるかなと思いました
後は書き込み時間と主キーが同じなら、
書き込み時間をカラムとして保存するよりもデータ圧縮にもなるかな?と思ったのです
スレ番号がunix時間とのことだったので調べたところ、
intにすればそこそこ早いというので試してみたかったというのもあります
後は2chを全体的に真似してみようと思ったのですが、
もしかして主キーはunix時間じゃないのでしょうか
やはり主キーは普通に1から順にして、auto_incrementにすべきでしょうか
ごめんなさい、自己解決しました
PHPの問題でした
PHPの問題でした
CSVを定期的にMySQLへインポートしているのですが、次のようにしています。
作業用テーブル作成 → 作業用テーブルにガリガリINSERT → 運用中のテーブルをリネームor削除 → 作業用テーブルを本運用テーブル名にリネーム
この際、当然ながら 0.001秒くらいテーブルが存在しなくなる時間が存在しており、ごく稀にこの空白時間にひっかかる事があります。
シームレスにテーブルを入れ替えることってできるでしょうか?
作業用テーブル作成 → 作業用テーブルにガリガリINSERT → 運用中のテーブルをリネームor削除 → 作業用テーブルを本運用テーブル名にリネーム
この際、当然ながら 0.001秒くらいテーブルが存在しなくなる時間が存在しており、ごく稀にこの空白時間にひっかかる事があります。
シームレスにテーブルを入れ替えることってできるでしょうか?
>612
CSVファイルとインポート先テーブルの列構造が同じなら、
-----
1.空のテーブルをCSVエンジンで作成
2.インポートしたいCSVファイルを出来たhoge.CSVに上書き
3.FLASH TABLE;
4.ALTER DATABASE hoge ENGINE=InnoDB;
5.RENAME TABLE target_db TO sute_db, hoge TO target_db;
6.DROP TABLE sute_db;
-----
みたくすると、多分一番速くてリソースも使わない
CSVファイルとインポート先テーブルの列構造が同じなら、
-----
1.空のテーブルをCSVエンジンで作成
2.インポートしたいCSVファイルを出来たhoge.CSVに上書き
3.FLASH TABLE;
4.ALTER DATABASE hoge ENGINE=InnoDB;
5.RENAME TABLE target_db TO sute_db, hoge TO target_db;
6.DROP TABLE sute_db;
-----
みたくすると、多分一番速くてリソースも使わない
インポートしたいCSVファイルをCSVエンジンでいきなりテーブルAとする。
挿入先テーブルをMとして、
INSERT INTO M (中略) SELECT (中略) FROM A (後略)
で、なんかマズい?
挿入先テーブルをMとして、
INSERT INTO M (中略) SELECT (中略) FROM A (後略)
で、なんかマズい?
あるでデータがCSVで落とせるのですが、
時間がないので、
本来リレーションさせる系のデータも
そのまま生でvarchar型等で挿入してしまっても
大丈夫ですよね??
いちおー落ち着いたら、前データを数字に置換し
リレーション型にしようかと思ってます。
時間がないので、
本来リレーションさせる系のデータも
そのまま生でvarchar型等で挿入してしまっても
大丈夫ですよね??
いちおー落ち着いたら、前データを数字に置換し
リレーション型にしようかと思ってます。
後からマイグレーションするの?
自分でケツ拭くつもりなら、まぁいいんじゃない
時間がなくてもER図くらいは描いといたほうがいいと思うけどね
自分でケツ拭くつもりなら、まぁいいんじゃない
時間がなくてもER図くらいは描いといたほうがいいと思うけどね
PHP Error(USER): [DB Error] : message="DB Error: unknown error" info="INSERT INTO
`M_user`(`regist_datetime`,`update_datetime`,`user_mailaddress`,`user_type`,`user_password`,`user_status`,`user_ua`,`user_device`)
VALUES(NOW(),NOW(),'k7decdd2a735yf7@softbank.ne.jp','NO','1234',1,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko)
Chrome/19.0.1084.52 Safari/536.5','PC'); [nativecode=1213 ** Deadlock found when trying to get lock; try restarting transaction]" in
/home/prj/101/contents/private/lib/magicwork/DBO.php on line 227
ユニクロのDBエラーw
http://www.uniqlo-cool.com/
`M_user`(`regist_datetime`,`update_datetime`,`user_mailaddress`,`user_type`,`user_password`,`user_status`,`user_ua`,`user_device`)
VALUES(NOW(),NOW(),'k7decdd2a735yf7@softbank.ne.jp','NO','1234',1,'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/536.5 (KHTML, like Gecko)
Chrome/19.0.1084.52 Safari/536.5','PC'); [nativecode=1213 ** Deadlock found when trying to get lock; try restarting transaction]" in
/home/prj/101/contents/private/lib/magicwork/DBO.php on line 227
ユニクロのDBエラーw
http://www.uniqlo-cool.com/
基本的なことですいません、教えてください
社員のデータベースを作り、色々なことに使おうと思うのですが
東京だけselectで抜き出し、社員番号を1から順に振り直す、というようなことはできますか?
社員番号 支店 名前
1 東京 山田
2 大阪 田中
3 東京 山本
4 東京 佐々木
5 大阪 神埼
社員のデータベースを作り、色々なことに使おうと思うのですが
東京だけselectで抜き出し、社員番号を1から順に振り直す、というようなことはできますか?
社員番号 支店 名前
1 東京 山田
2 大阪 田中
3 東京 山本
4 東京 佐々木
5 大阪 神埼
用途は社員旅行等、他愛のないものなのですが
歯抜けだと不便なので補完したいのです。
それとも表計算ソフトなどで加工したほうが早いでしょうか
歯抜けだと不便なので補完したいのです。
それとも表計算ソフトなどで加工したほうが早いでしょうか
1 東京 山田
2 東京 山本
3 東京 佐々木
4 大阪 田中
5 大阪 神埼
こうしたいこと?
2 東京 山本
3 東京 佐々木
4 大阪 田中
5 大阪 神埼
こうしたいこと?
テーブルの中身を更新したいのか、表示のときだけ連番を振りたいかによって異なる。
表示のときだけ連番を振るのはこんな感じ。
mysql> set @id = 0;
mysql> select @id := @id + 1, job, ename from emp where job = 'salesman' order by ename;
+----------------+----------+--------+
| @id := @id + 1 | job | ename |
+----------------+----------+--------+
| 1 | salesman | allen |
| 2 | salesman | martin |
| 3 | salesman | turner |
| 4 | salesman | ward |
+----------------+----------+--------+
表示のときだけ連番を振るのはこんな感じ。
mysql> set @id = 0;
mysql> select @id := @id + 1, job, ename from emp where job = 'salesman' order by ename;
+----------------+----------+--------+
| @id := @id + 1 | job | ename |
+----------------+----------+--------+
| 1 | salesman | allen |
| 2 | salesman | martin |
| 3 | salesman | turner |
| 4 | salesman | ward |
+----------------+----------+--------+
クエリ一本でお望みの結果いけるぜ
window関数案件だが、mysqlはwindow関数無いからどうしてもループが多くなって、たくさんの行の解析には向かないけどな。
お家帰ったら書き込むから待っとれ
window関数案件だが、mysqlはwindow関数無いからどうしてもループが多くなって、たくさんの行の解析には向かないけどな。
お家帰ったら書き込むから待っとれ
帰ったぜ。
empid | br_name | name
-------+---------+--------
0 | 東京 | 山田
1 | 東京 | 山本
2 | 東京 | 佐々木
3 | 大阪 | 田中
4 | 大阪 | 神崎
とする。
で、求めたい支店毎の社員idをbr_empidとする。
select
empid
,br_name
,name
,(
select
count(*)
from
emp b
where
b.br_name = a.br_name
and b.empid <= a.empid
) as br_empid
from
emp a
order by
br_name
,br_empid
,empid
な感じで、相関クエリにしちゃえばOK。
意外と簡単。
order byとかは好きにしてくれ。
empid | br_name | name
-------+---------+--------
0 | 東京 | 山田
1 | 東京 | 山本
2 | 東京 | 佐々木
3 | 大阪 | 田中
4 | 大阪 | 神崎
とする。
で、求めたい支店毎の社員idをbr_empidとする。
select
empid
,br_name
,name
,(
select
count(*)
from
emp b
where
b.br_name = a.br_name
and b.empid <= a.empid
) as br_empid
from
emp a
order by
br_name
,br_empid
,empid
な感じで、相関クエリにしちゃえばOK。
意外と簡単。
order byとかは好きにしてくれ。
よろしくお願いします。 centOS6、mysql5.5.25です
現在初めてレプリケーションを実装して動かしているんですが
スレーブに対して実行してるselectが凄く遅くて困っています
マスタ(=アプリケーションサーバ)に同じことをする場合に比べて4倍くらい時間がかかっています
両方とも同じローカルネットワークにあり(マスタ:192.168.0.11、スレーブ:192.168.0.12)、
物理的な距離の問題?などないはずですが、マスタサーバで
ping 192.168.0.11 と ping 192.168.0.12 したとき、後者は前者の4,5倍の時間がかかっています
これはどうしようもないんでしょうか? 解決方法などあればご意見お願いします
また、実際にどこかのレンタルサーバを借りて同じことをした場合、もっと時間がかかるんでしょうか
現在初めてレプリケーションを実装して動かしているんですが
スレーブに対して実行してるselectが凄く遅くて困っています
マスタ(=アプリケーションサーバ)に同じことをする場合に比べて4倍くらい時間がかかっています
両方とも同じローカルネットワークにあり(マスタ:192.168.0.11、スレーブ:192.168.0.12)、
物理的な距離の問題?などないはずですが、マスタサーバで
ping 192.168.0.11 と ping 192.168.0.12 したとき、後者は前者の4,5倍の時間がかかっています
これはどうしようもないんでしょうか? 解決方法などあればご意見お願いします
また、実際にどこかのレンタルサーバを借りて同じことをした場合、もっと時間がかかるんでしょうか
ごめんなさい、あげさせてください
>>645
どうもありがとうございます、すみませんがもう少し聞かせてください
きっとここにいる人は今回の例のように「レプリケーションを組んでselect系の処理はスレーブに任せる」
という作業はしたことある人が多いと思うんですが、
その時、別端末のスレーブへの問い合わせがマスタ(兼アプリケーション)への問い合わせより
全然遅いというのはざらにあることなんでしょうか?
僕のネットワークやサーバの設定が特別に酷くてこんなに差が出てるのか、
端末をまたぐ以上不可避の問題なのか知りたいです
mysqlに直接関係なくて申し訳ありません
レプリケーションの設定マニュアルやクエリ振り分けのハウツー解説サイトは見たものの
実装後のこういう問題については見つけられず、スレーブ対象で
たった10行のテーブルから1行selectする処理で5秒かかっていて困っています
どうもありがとうございます、すみませんがもう少し聞かせてください
きっとここにいる人は今回の例のように「レプリケーションを組んでselect系の処理はスレーブに任せる」
という作業はしたことある人が多いと思うんですが、
その時、別端末のスレーブへの問い合わせがマスタ(兼アプリケーション)への問い合わせより
全然遅いというのはざらにあることなんでしょうか?
僕のネットワークやサーバの設定が特別に酷くてこんなに差が出てるのか、
端末をまたぐ以上不可避の問題なのか知りたいです
mysqlに直接関係なくて申し訳ありません
レプリケーションの設定マニュアルやクエリ振り分けのハウツー解説サイトは見たものの
実装後のこういう問題については見つけられず、スレーブ対象で
たった10行のテーブルから1行selectする処理で5秒かかっていて困っています



類似してるかもしれないスレッド
- 【】 MySQLを買収したSunを買収したOracleを 【】 (112) - [25%] - 2023/1/22 14:15
- 【この先一体】MySQL 総合 Part15【どうなるの】 (1001) - [21%] - 2009/11/22 13:31 ○
トップメニューへ / →のくす牧場書庫について