私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレMySQL 5.0
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
今更潰すは、さすがに考えにくいんじゃないの。
ポスグレに持っていかれるくらいなら、撒き餌として残すだろ。。たぶん。
ポスグレに持っていかれるくらいなら、撒き餌として残すだろ。。たぶん。
mysqlはoracleの下位バージョンとして開発し
その上位バージョンとしてoracleを持ってくることで
フリーと商用のシェア拡大を目指す
その上位バージョンとしてoracleを持ってくることで
フリーと商用のシェア拡大を目指す
MySQLの次期バージョンを出したり将来のビジョンを提示したりして
今後も発展するんだ、安心だ、と思わせといて飼い殺す。
今後も発展するんだ、安心だ、と思わせといて飼い殺す。
win版の5.0.77-community-ntですがCSVエンジンを利用するにはどうすれば良いですか?
show enginesでNOになってます。
show enginesでNOになってます。
MySQLのオラクルマスターを作ればMySQLに力を入れる
MySQLのオラクルマスターを作らないならMySQLに力を入れない
MySQLのオラクルマスターを作らないならMySQLに力を入れない
■セッション1
mysql> set transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
Empty set (0.00 sec)
■セッション2
mysql> set transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
Empty set (0.00 sec)
■セッション1
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values (1);
Query OK, 1 row affected (0.00 sec)
■セッション2
mysql> select * from test;
Empty set (0.00 sec)
みえないよ?
mysql> set transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
Empty set (0.00 sec)
■セッション2
mysql> set transaction isolation level serializable;
Query OK, 0 rows affected (0.00 sec)
mysql> select * from test;
Empty set (0.00 sec)
■セッション1
mysql> begin;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into test values (1);
Query OK, 1 row affected (0.00 sec)
■セッション2
mysql> select * from test;
Empty set (0.00 sec)
みえないよ?
>>359
テーブルが InnoDB じゃなくて MyISAM になってるとか。
テーブルが InnoDB じゃなくて MyISAM になってるとか。
>>362
Table構成がそのはてなの質問と同じとして、id及びgoods_idに
複合インデックスが貼ってあり、それがユニークか、Hit率がテーブル全体のレコード数より
十分少なければ、order by descが早いんでないかな。
もっと言うと、INDEX(id,goods_id,date)で複合インデックスがあればなおよし。
でなくて、idとgoods_idの値が、レコード全体の多くにHitしてしまう場合は、
そこにあるようにサブクエった方が早そうな感じ(もちろんdateにインデックスが貼ってあるとして)。
Table構成がそのはてなの質問と同じとして、id及びgoods_idに
複合インデックスが貼ってあり、それがユニークか、Hit率がテーブル全体のレコード数より
十分少なければ、order by descが早いんでないかな。
もっと言うと、INDEX(id,goods_id,date)で複合インデックスがあればなおよし。
でなくて、idとgoods_idの値が、レコード全体の多くにHitしてしまう場合は、
そこにあるようにサブクエった方が早そうな感じ(もちろんdateにインデックスが貼ってあるとして)。
質問ですが、
以下の感じでやろうとしてます
select 学生id ,出席日数,出席率 from 学生名簿
left join
(select sum(出席) as 出席日数 , sum(round(出席数/365,2)) as 出席率 ,学生id from 出席簿
where 学生id in ( select 学生id from 学生名簿 order by 学生名 limit 0,50) group by 学生id) as 出席データ on 出席データ.学生id=学生名簿.学生id
order by 学生名 limit 0,50
学生名簿(カラム):学生id(primarykey),学生名
出席簿(カラム):学生id,日付,出席(enum(1,0))
limitができれば高速になるんですが、ないとusingfilesortになります。
mysqlでサブクエリにlimit発行できないので、なにかいい方法があればご教授願います。
以下の感じでやろうとしてます
select 学生id ,出席日数,出席率 from 学生名簿
left join
(select sum(出席) as 出席日数 , sum(round(出席数/365,2)) as 出席率 ,学生id from 出席簿
where 学生id in ( select 学生id from 学生名簿 order by 学生名 limit 0,50) group by 学生id) as 出席データ on 出席データ.学生id=学生名簿.学生id
order by 学生名 limit 0,50
学生名簿(カラム):学生id(primarykey),学生名
出席簿(カラム):学生id,日付,出席(enum(1,0))
limitができれば高速になるんですが、ないとusingfilesortになります。
mysqlでサブクエリにlimit発行できないので、なにかいい方法があればご教授願います。
俺なら、状況に応じて以下のどれかで対応する。
・クエリキャッシュをアテにする
・バッチで予め計算しちゃう
・クエリを分割する
・テーブル分割をやめる
・全部抜いてから計算する
・そもそも高速化する必要があるか考える
・クエリキャッシュをアテにする
・バッチで予め計算しちゃう
・クエリを分割する
・テーブル分割をやめる
・全部抜いてから計算する
・そもそも高速化する必要があるか考える
なあ、ちょっと真剣にマジで教えてほしい
あるデータベースのプライマリキーをキャラクタ属性で設定することのデメリットって何だと思う?
キーはINTにすんのが検索も早そうだし、多分そうなのかも知れんが納得できる理由がはっきりしない
まあCHARだとコレーションで正しくソートされない可能性があったりCOUNTが正しくされないのかも知れないけど
現場レベルでは盲目的に数値型にしてるような気もすんだよね
何か論理的な理由を聞かせてもらえないか?
あるデータベースのプライマリキーをキャラクタ属性で設定することのデメリットって何だと思う?
キーはINTにすんのが検索も早そうだし、多分そうなのかも知れんが納得できる理由がはっきりしない
まあCHARだとコレーションで正しくソートされない可能性があったりCOUNTが正しくされないのかも知れないけど
現場レベルでは盲目的に数値型にしてるような気もすんだよね
何か論理的な理由を聞かせてもらえないか?
変に括弧とかかかないで
最適化はMySQLに任せてしまったほうがいい・・・はず
最適化はMySQLに任せてしまったほうがいい・・・はず
すみません。今日はじめてXAMPPからMySQLをインストールしたんですが
デフォルトでパスワードが無い状態なので、掛けようと思うのですが、
掛け方はいろいろ書いてあるのですが、みんなどこに書いているのかが分かりません。
コマンドプロンプトかと思って入力しても、エラーがおこるのですが
どこに入力したらよろしいのか教えてください
デフォルトでパスワードが無い状態なので、掛けようと思うのですが、
掛け方はいろいろ書いてあるのですが、みんなどこに書いているのかが分かりません。
コマンドプロンプトかと思って入力しても、エラーがおこるのですが
どこに入力したらよろしいのか教えてください
>>370
絶対に括弧で囲まないとだめ。
joinするときの結合キーがそのテーブルのprimary keyなら結果は同じなんだけど、
そうでない場合、括弧で囲む場合と、そうでない場合で結果がかわる。
なぜかというと、括弧なしの場合、AとBをjoinした結果フェッチする行数が存在しない場合でも、
BとCのleft joinを行うからだ。
絶対に括弧で囲まないとだめ。
joinするときの結合キーがそのテーブルのprimary keyなら結果は同じなんだけど、
そうでない場合、括弧で囲む場合と、そうでない場合で結果がかわる。
なぜかというと、括弧なしの場合、AとBをjoinした結果フェッチする行数が存在しない場合でも、
BとCのleft joinを行うからだ。
>>374
mysql-bin.000008 かそれが置いてあるディレクトリにパーミッションがない。
mysql-bin.000008 かそれが置いてあるディレクトリにパーミッションがない。
>>370
A left join ( B left join C on B.id=C.id ) on A.id=B.id
A left join ( B left join C on B.id=C.id ) on A.id=B.id
お礼遅れてすいません。ありがとうございます。
やはり自分のところではorder by よりmaxのサブクエリを使った方が早いみたいでした。
やはり自分のところではorder by よりmaxのサブクエリを使った方が早いみたいでした。
selectの結果を保存するのは出来ない気がしてきたので、ストアドプロシージャの練習を兼ねて
書いてみました。
DELIMITER //
CREATE PROCEDURE net_user_enable(IN myhost CHAR(64), IN myname CHAR(64), IN mypassword CHAR(64))
BEGIN
-- 1: USERテーブルにユーザとホストの組み合わせを追加
INSERT INTO mysql.user VALUES (myhost,myname,PASSWORD(mypassword),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0);
-- 2: dbテーブルにホストを追加
INSERT INTO mysql.db VALUES (myhost,'%',myname,'Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;
END //
DELIMITER ;
-- こんな感じで使ってね。
CALL net_user_enable('localhost','hoge','hogeのパスワード');
書いてみました。
DELIMITER //
CREATE PROCEDURE net_user_enable(IN myhost CHAR(64), IN myname CHAR(64), IN mypassword CHAR(64))
BEGIN
-- 1: USERテーブルにユーザとホストの組み合わせを追加
INSERT INTO mysql.user VALUES (myhost,myname,PASSWORD(mypassword),'N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','N','','','','',0,0,0,0);
-- 2: dbテーブルにホストを追加
INSERT INTO mysql.db VALUES (myhost,'%',myname,'Y','Y','Y','Y','Y','Y','N','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y');
FLUSH PRIVILEGES;
END //
DELIMITER ;
-- こんな感じで使ってね。
CALL net_user_enable('localhost','hoge','hogeのパスワード');
database「hogedb」の中にテーブル「hoge」「age」「sage」を作ったのだが、
うち一つはselect時にselect * from hogedb.hogeのようにデータベースを指定しないとエラーになる。
なんで??
エラー内容;
RROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hoge' at line 1
うち一つはselect時にselect * from hogedb.hogeのようにデータベースを指定しないとエラーになる。
なんで??
エラー内容;
RROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'hoge' at line 1
Workbenchでテーブルを作成しました。ここからCREATE文のスクリプトを作成することは出来ますが
ついでにInsert文のスクリプトも作成することは可能でしょうか?
(テーブルのタブに「Inserts」というのがあり、ここで投入用のデータをエディタで書けるのだが、ここからどうすればスクリプトに落とせるのか不明)
知ってたら教えて下さい
ついでにInsert文のスクリプトも作成することは可能でしょうか?
(テーブルのタブに「Inserts」というのがあり、ここで投入用のデータをエディタで書けるのだが、ここからどうすればスクリプトに落とせるのか不明)
知ってたら教えて下さい
http://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9188.txt
違ったデータベース名、テーブル名は関係なかった。よくよく見るとスクリプトでテーブルを作るときに警告が
出てた。上にアップしたスクリプトは簡単なテーブルを3つ作るだけなのだが、何がおかしいのだろうか
単純にselect * from order;がエラーになる。(データベース名を指定するとおk)
違ったデータベース名、テーブル名は関係なかった。よくよく見るとスクリプトでテーブルを作るときに警告が
出てた。上にアップしたスクリプトは簡単なテーブルを3つ作るだけなのだが、何がおかしいのだろうか
単純にselect * from order;がエラーになる。(データベース名を指定するとおk)
予約語だった。。。知らなかった
ちくしょー!!
ちくしょー!!
ユーザーがグループに所属していて、グループもまた別のグループに所属しているような階層構造になっている場合、
どうやって所属情報をDBに入れるのが賢いの?
上位グループに所属するユーザーを抽出するクエリがつくりにくいんだけど
どうやって所属情報をDBに入れるのが賢いの?
上位グループに所属するユーザーを抽出するクエリがつくりにくいんだけど
>どうやって所属情報をDBに入れるのが賢いの?
MySQL捨ててPostgreSQLに入れるのが賢い。
MySQL捨ててPostgreSQLに入れるのが賢い。
Postgresは現行VerでもOracle風のconnect byが使える。
もうすぐ出る次期VerではSQL99準拠のWITH RECURSIVEも
使えるらしい。
もうすぐ出る次期VerではSQL99準拠のWITH RECURSIVEも
使えるらしい。
>>396
そのためOracleとかでは階層問い合わせをするための独自の文法が定義
されているし、標準SQLでもSQL99以降で再帰クエリを記述する文法が
追加されている。
こういった拡張を使うとツリーに対する検索とか>>390のクエリなんか
はもっと簡単に書けるよ。
で、フリーのRDBMSではPostgreSQLがこのあたりの拡張によく対応して
いるから、一つの選択肢として紹介したわけで。
http://lets.postgresql.jp/documents/technical/with_recursive/
MySQLというか再帰が無いSQLで書く技もあるけど、結構な頭の体操。
http://www.mysql.gr.jp/mysqlml/mysql/msg/12071
そのためOracleとかでは階層問い合わせをするための独自の文法が定義
されているし、標準SQLでもSQL99以降で再帰クエリを記述する文法が
追加されている。
こういった拡張を使うとツリーに対する検索とか>>390のクエリなんか
はもっと簡単に書けるよ。
で、フリーのRDBMSではPostgreSQLがこのあたりの拡張によく対応して
いるから、一つの選択肢として紹介したわけで。
http://lets.postgresql.jp/documents/technical/with_recursive/
MySQLというか再帰が無いSQLで書く技もあるけど、結構な頭の体操。
http://www.mysql.gr.jp/mysqlml/mysql/msg/12071
類似してるかもしれないスレッド
- MySQL 総合 Part20 (995) - [14%] - 2011/10/17 4:48
トップメニューへ / →のくす牧場書庫について