【この先一体】MySQL 総合 Part15【どうなるの】

このエントリーをはてなブックマークに追加
601NAME IS NULL
table1(元データ),table2(フラグ定義),table3(table1の各項目にフラグをぶら下げる)があって、
table1の一部の項目にフラグがついた状態になっています。
これを結合して、フラグの有無にかかわらず全項目を表にしたいと考えています。

select (略) from table1 left join (table2 inner join table3 on table2.id=table3.id) on table1.flag=table3.flag;

とすると、フラグがNULLのものが表に出てきません。
どうしたらいいでしょうか?
602NAME IS NULL:2009/08/02(日) 20:48:28 ID:J20WEjYY
テーブル名とかフィールド名って、何文字くらいを上限にしてますか?
603NAME IS NULL:2009/08/03(月) 17:29:57 ID:???
mysqlの設定中に手詰まりしたので助けてくれ

状況:WindowsからMysqlAdministratorを使用してログインしようとしたらエラー
Mysql Error Number 2003(Can't Connect to MySQL server on 'IPアドレス'

サーバー
OS:Centos5(x64) Xenにて仮想化
Domein
 FILESERVER
 DATABASE
 WEB
Enforceは全てDISABLEDにしてある

ローカルからデータベースへの接続は可能なんだがリモートでの接続がエラーが
出て上手くいかない

ぐぐってみたら
/etc/my.conf の bind-addressが127.0.0.1 をコメントアウトしろとか書いてあるが…
うちの設定にはそもそも無かったw

あと考えられる部分って何だろう?
数日悩んでいて多分単純な事に気づいていないだけだと思うんだが
604NAME IS NULL:2009/08/03(月) 17:58:37 ID:77U0plNm
考えられること:お前がバカだということ
605NAME IS NULL:2009/08/03(月) 18:32:13 ID:???
SELinux
iptables
ping
mysqladmin ping
606NAME IS NULL:2009/08/03(月) 18:35:51 ID:???
>>603
接続に使用しようとしているMYSQLユーザのホストはどうなってる?
localhostや127.0.0.1だったら繋がらない。
607NAME IS NULL:2009/08/03(月) 20:17:30 ID:???
MySQLの日付型はyyyy-mm-dd hh:nn:ss形式のようですが、
面倒な変換なしにyyyy/mm/ss hh:nn:ss型を使えないでしょうか?
608NAME IS NULL:2009/08/03(月) 20:35:18 ID:???
>>607
そのまま格納は無理だろう。
表示はdate_format使え。
609NAME IS NULL:2009/08/03(月) 22:10:41 ID:???
>>607
update や insert で更新する値としてなら使える。
select で取り出す値は date_format() でも使わないと無理。
610603:2009/08/04(火) 08:44:28 ID:???
>>604-606
アドバイスサンクス!
その辺りの事を全て確認してみたがダメだった

原因の切り分けが出来ないから一度仮想化せずに設定して問題なければ
仮想化してチャレンジしてみるよ
611NAME IS NULL:2009/08/04(火) 12:34:02 ID:???
>>610
>>604も確認したのか。ワロタw
612603:2009/08/04(火) 12:36:22 ID:???
>>611
それも当然確認したw
馬鹿で間違いないw
613NAME IS NULL:2009/08/04(火) 20:05:58 ID:CvqNEHZq
mysqladminで文字コードをutf8からsjisに変えたのに、
status;をみると何種類もあるうちの1つしかsjisになっておらず、残りはutf8のまま。
全部変えたいときはどこいじればいいの?
614NAME IS NULL:2009/08/04(火) 21:58:38 ID:???
>>613
何をやったのか具体的にどぞ。
615NAME IS NULL:2009/08/04(火) 22:57:55 ID:???
またまたかまってちゃん登場
616NAME IS NULL:2009/08/05(水) 00:36:41 ID:dQ/gDRRx
3.28くらいから5.0にmyisamのファイルをバイナリレベルのコピーで持ってきたんだけど、
varcharの解釈がバイトレベルから文字数レベルになったから、
そのままだと途中で切れちゃう。
そこで一旦3.28側でvarcharを2倍にしてから持ってきたら問題なかった。
一応これで動いてるけど、本当に問題ないのかな?
617NAME IS NULL:2009/08/05(水) 04:06:22 ID:AIBVsZem
素直にダンプ&ロードした方がすっきりするが・・
618NAME IS NULL:2009/08/05(水) 21:15:27 ID:9eWVh/Lf
select * from user WHERE id = $user
この時$userに1jとか入れてもid1を抽出してくるのなぜですか?
619NAME IS NULL:2009/08/05(水) 22:14:42 ID:???
仕様に決まってんだろカス
620NAME IS NULL:2009/08/05(水) 22:33:04 ID:???
複素数入力しても整数に暗黙のキャストされるんだよ。
MySQLの開発者は電気系な。
621NAME IS NULL:2009/08/06(木) 00:11:24 ID:4Rgx9kKE
MySQL WorkbenchでER図書いているんだけど、
ひょっとしてテーブル作った後に、テーブルのスキーマ変更できない・・・?

622NAME IS NULL:2009/08/06(木) 18:48:04 ID:XYQGPPAG
できるわけねーだろボケ
623NAME IS NULL:2009/08/06(木) 19:11:18 ID:???
いやできるだろ ALTER TABLE で.
内部的には全部作り直しているみたいだけど.
624NAME IS NULL:2009/08/06(木) 22:12:57 ID:???
全文検索を早くしたいと思って、上で出ていたTritonn(windows版)を導入したんですが、ちょっと動作的な質問です。

TelNo varchar(11)
fulltext index using ngram, normalize (TelNo)

の中に、以下のようなデータがはいってたとします。

0123-45-6789
1234-56-7890
234-567-7890
1234567890
0123-556789

これを
select count(*) from sample where match(TelNo) against("7890");
とすると

1234-56-7890
234-567-7890

は抽出するけど

1234567890

は非抽出なんです。

ちなみに
fulltext index using ngram,no normalize (TelNo)
とすれば抽出するようです。
正規化機能って数字羅列は無理なんですか?
625621:2009/08/06(木) 23:04:39 ID:4Rgx9kKE
>>622
>>623
すまん、テーブル作った後にという表現が悪かった。

既に複数のテーブルを定義してあるんだけど、
ER図の上での定義としてスキーマを変更したいんだけど
やり方が分からない。

ERWinとかERStudioならテーブルのプロパティに、スキーマの
定義があって変更すれば済む。


ちなみに1テーブルづつなら、コピーしたテーブルをスキーマタブに
ペーストする事で実現できたんだけど、本来は複数テーブルと
それに紐づくリレーションをまとめてスキーマ移動したいのです。

626NAME IS NULL:2009/08/07(金) 08:00:10 ID:???
>>624
split_digit 指定しれ。
ttp://d.hatena.ne.jp/mir/20070906/p2
627NAME IS NULL:2009/08/07(金) 12:43:30 ID:???
Windows2003環境で
OSからメモリ不足エラー(Got Error 12)が頻発するんだけど、
設定ファイルのどの項目のメモリ量減らせば解決できますか?

ただ、タスクマネージャ見ても搭載メモリの半分も使ってないのに
このエラーが出るので何かほかのところが間違っている気もするんですが...

どなたかわかる方教えてください。
628NAME IS NULL:2009/08/07(金) 17:52:52 ID:???
具体的におこなった操作とエラーの内容を書け
629627:2009/08/07(金) 18:39:51 ID:???
>628
そうだよな、すまない

基本的にInsertとSelectしかしてないです。
大きめのテキストファイルを解析して投げているので、
Insertはものによっては100kb以上なってると思う。

登録されているデータは12GBほど@Mysql\dataフォルダの容量なのでアバウト
登録データが増えるほど頻発するようになった。
表示されたエラーは(たぶんSelect発行時)
「Got error 12 from storage engine」
これが出るとサービス再起動しか復帰できない...

設定はVineとかに入ってる設定サンプルを参考に文字コードとかかを変更したもの
ttp://vine-linux.ddo.jp/linux/sql/mycnf.php こういうの
メモリは2G積んでるから
初めはhugeでやってたけどmediumでも同じ症状が出るから
今はsmallでなんとか安定してうごいてる。

MySQLのバージョンは5.0とすこし古めです
630NAME IS NULL:2009/08/07(金) 20:36:20 ID:???
うざくて読む気がしない
631624:2009/08/07(金) 22:02:24 ID:???
>>626
ありがとうございました。
やりたい事ができました。
632NAME IS NULL:2009/08/07(金) 22:04:42 ID:???
>>629
2GBじゃ足りないってことだろう。つーかselectでコケてるのわかってんなら
クエリかインデックスを見直すべきじゃないかなぁ。
633NAME IS NULL:2009/08/07(金) 23:14:48 ID:???
>>629
たぶん、mysqld が必要とするメモリを確保できない。
my.cnf のパラメータみなおして、メモリ使用量少なめになるように調整してみては?
634633:2009/08/07(金) 23:16:04 ID:???
>>629
ああ、small で安定してるのか。ゴミレスごめん。
635NAME IS NULL:2009/08/08(土) 15:54:56 ID:???
ごみレスは629
636NAME IS NULL:2009/08/10(月) 00:55:17 ID:WJlH4sRX
運用中のdbのカラム変更ってどういう手順でしてますか?
外部から接続してこないようにポート塞いでから変更→ポート開けるとか?
637NAME IS NULL:2009/08/10(月) 12:30:26 ID:xYYENRj3
Handler_read_rnd_nextが赤文字になるのは仕様?
リセットかけても直ぐに赤文字になるんだけど。。
638NAME IS NULL:2009/08/10(月) 17:51:56 ID:umkbwiYM
しようがない
639NAME IS NULL:2009/08/10(月) 19:12:31 ID:???
質問です。
2つのテーブルを比較して、指定したカラムのデータが完全に一致することを
チェックするには、どうするのがいいでしょうか。
640NAME IS NULL:2009/08/10(月) 22:01:23 ID:???
2つのテーブルを比較して、指定したカラムのデータが完全に一致することをチェックすればいいんじゃないかな
641NAME IS NULL:2009/08/10(月) 22:30:31 ID:???
うん、そうだね
642NAME IS NULL:2009/08/14(金) 23:19:48 ID:QWmtJHHL
MySQLで複数テーブルを一気にcreate tableしたいのですが
マクロとかありますか?
643NAME IS NULL:2009/08/14(金) 23:58:45 ID:???
>>642
同じ構造のテーブルをたくさん作りたいのかな。
シェルスクリプトでもperlでもVBAでもいいので、自分で書いちゃダメ?
644NAME IS NULL:2009/08/15(土) 00:10:31 ID:???
>>643
システムの初期導入設定時に複数のcrate tableのSQLを一括で
実行してDB本番環境をすばやく構築したいのです。
一個一個のテーブルを手でcreate tableするのは出来ますが
テーブル数が多いのでマクロかなんかで一括で実行出来たら良いなと。
個々のcreate tableのsqlファイルは既にあります。
OracleだとPL/SQLとかでやってると思いますがMySQLではどうしてるのかなと。
645644:2009/08/15(土) 00:20:46 ID:???
自己解決しました。
バッチ処理が出来るようですね。
ttp://mysqlweb.net/category/4033228-1.html
646NAME IS NULL:2009/08/15(土) 09:14:23 ID:???
>>644
ファイルがあるのなら、
cat *.sql | mysql
でいいんじゃね?

と思ったら、解決したのか。
647NAME IS NULL:2009/08/18(火) 11:41:26 ID:???
サーバAにmysqlが入っていて、サーバBから接続したい場合は
どれをインスコするの?
サーバB自体にはDBを持たず、接続するだけの場合。
例)
mysql testdb -h サーバA -u test -p < test.sql > out.txt

MySQL-client-communityだけ?
MySQL-develも必要?
648NAME IS NULL:2009/08/18(火) 19:49:09 ID:???
mysqlコマンド使うだけならclientのみ。
PerlとかCから繋ぐならsharedも必要、
繋ぐものをソースからビルドするならdevelも必要
649NAME IS NULL:2009/08/19(水) 03:47:47 ID:dChAbBgf
MYIファイルが肥大化してきたので整理しようと思うのですが
行を削除した段階ではMYIファイルは縮まないですよね?
削除後MYIファイルを縮めるには、myisqmchkでsort-indexするでOKですか?
あるいは他に方法があれば教えてください
650NAME IS NULL:2009/08/19(水) 11:21:30 ID:???
optimize tableでもできたはず
651647:2009/08/19(水) 13:00:14 ID:???
>>648
ありがとう!
652NAME IS NULL:2009/08/19(水) 13:00:53 ID:7XUHkeqC
質問です、長くなりますがお願いします。
スケジューラをphp5とmysql5で作っています。関連するテーブルは2つあって、

【sche_info_tb 基本的な情報用】
id, day, eventName
【sche_player_tb 各イベントの参加者用、evIdはsche_info_tbのidです】
id, evId, player

こんな感じです。(それぞれもっとカラムありますが省略してます。参加者は不定数なので、テーブル分離必須?です)
これで、スケジュール一覧のカレンダーを作るときどうやってクエリしたら良いのか迷っています。
カレンダーの構成要素は開催日(sche_info_tb.day)、イベント名(sche_info_tb.eventName)、
参加者名(sche_player_tb.player)です。

自分の考えでは、
1)SELECT * FROM `sche_info_tb` を実行
2)返ってきた結果に対してforeachをまわして一つずつidを取得
3)それをつかって SELECT * FROM `sche_player_tb` WHERE `evId`=$id を実行
という感じです。

しかし、これじゃクエリの実行回数が多過ぎる気がします。ひと月30日として、30回。
1日に複数イベント登録したらもっと増えます。
何か、賢いやり方ないでしょうか?
スケジューラアプリはいろんなサイトにありますが、全部こんなやり方してるんでしょうか? これが普通ですか?
初心者なりに考えて作ってるつもりですが、不出来なところがあれば教えていただけると幸いです。
よろしくお願いします。
653NAME IS NULL:2009/08/19(水) 14:28:38 ID:???
テーブルのJOINをしたことありませんか?

select i.day, i.eventName, p.player
from sche_info_tb i, sche_player_tb p
where i.id = p.evId
and i.day between '2009-08-01' and '2009-08-31'
;
654NAME IS NULL:2009/08/19(水) 14:38:14 ID:???
オレはLEFT JOINを多用しているけど、知人はINNER JOINを多用していると言われた。
INNER JOINのほうが使いやすいのかな・・・
もちろん状況にもよるだろうけど。
655NAME IS NULL:2009/08/19(水) 16:03:34 ID:7XUHkeqC
>>653,654
うわー、すごい!
聴いたことはあったんですが理解できなくて手を付けていませんでした。>JOIN
こういう状況で使うんですね。 自分でもう一度確認し直します、ありがとうございました!
656NAME IS NULL:2009/08/19(水) 17:53:56 ID:???
ほんとにJOINしたことなかったんだw
がんばってください
657NAME IS NULL:2009/08/19(水) 18:34:21 ID:???
>>654
オレは、LEFT OUTER JOINばっかり。
それだけといっても過言ではない。

INNERとかCROSSとかいろいろあるけど、
使うべきケースがまったくわかんね。orz
658NAME IS NULL:2009/08/19(水) 18:45:57 ID:???
JOINとかサブクエリーとか覚えると世界が広がるからガンガレ
659NAME IS NULL:2009/08/19(水) 20:57:38 ID:fdU1p2ON
ストアドプロシージャでのエラー処理で教えてください。

プロシージャ内で、
insert into hoge (id, name) values(_id, _name);
といったクエリを発行し、データを登録しています。
このときに、insertの結果(正否)を取得するにはどうしたらいいでしょうか?
sybaseとかだと、@@sql_statusとかで直前のクエリのステータスを取得できたと思います。
mysqlの場合はどのようにしたらいいでしょう。

5.0.45-log
MYISAM
です。よろしくお願いします。
660652:2009/08/20(木) 20:15:50 ID:W0DXzN4C
>>653さんのクエリでjoinを教えてもらってお世話になったものです。
自分で、
select t1.*, t2.* from table1 t1, table2 t2 where~~
としてクエリを実行したところ、返り値の中にidが2つある状態になりました
echo $rs[0]['id']とやると、一つ目のidを出力します。
明示的に「一つ目の重複カラムを表示する」あるいは、
クエリ発行時に出力対象から特定のカラムを除外する方法はないでしょうか?
すみませんがアドバイスお願いします。

>>658
サブクエリ教えてくれてありがとうございました
これは便利ですね!
661NAME IS NULL:2009/08/20(木) 20:28:37 ID:???
アスタリスクで書いたらそうなるね。
手抜きしないで
select t1.id, t1.hoge, t1.fuga, t2.foo, t2.bar
と必要な列だけ書きましょう。
ちなみにうちの会社では「select *」はコーディング規約で禁止されてます。
662652:2009/08/20(木) 20:56:57 ID:???
>>661
それしかないんですか…
全部で50個くらいカラムがあるんだけどそれでも個別に書いてくってことですよね?
大変だなぁ。。
とりあえずそうします、ありがとうございました。
663NAME IS NULL:2009/08/20(木) 20:57:29 ID:oS//lB2K
>>659
どうも調べてみたら、declare handlerで例外処理をキャッチで着るみたいね。
これでインサートエラーをトラップできそう。
664NAME IS NULL:2009/08/20(木) 21:00:12 ID:oS//lB2K
>>662
そんなもん、クラス化(ライブラリか)しておいたらいいでしょう。
また、最初の一発目も、desc テーブル名とかでカラムリストとって、
整形すればさほど難しくはない。
なにより、*で手抜きだけはするなと言うこと。それをやったら許さんぞ。
665652:2009/08/20(木) 21:10:59 ID:???
>>664
クラス化っていうのはphpとかのプログラム側で関数化するってことですよね?(mysqlの用語ではなくて)
>最初の一発目も、desc テーブル名とかでカラムリストとって
ってなんですか?
クラス内のクエリ文を手作業で、t1.col1,t1.col2,t1.col3,t1.col4,…って書いていく時に、
テーブル構造を出力して見ながらやろうっていう事ですよね? 
666NAME IS NULL:2009/08/20(木) 21:35:54 ID:???
>>665
見ながらやるんじゃなくて、テーブル構造をコピペしてテキストエディタかなんかでマクロを使うか、
sed等で置換するかして機械的な処理で整形してください。
という意味です。がんばってね。ここで手を抜かないことが大事だよ。
667652:2009/08/20(木) 21:58:17 ID:???
>>666
あー、なるほど! よくわかりました、ありがとう!
668NAME IS NULL:2009/08/21(金) 12:21:52 ID:???
あちゃー
オレも面倒なときはつい * を使ってしまうわw
* と 個別にカラムを指定するのって速度的に違いはあるのかな?
感覚的に * のほうが処理速度は速そうだけど・・・。
669NAME IS NULL:2009/08/21(金) 12:36:16 ID:???
select対象列がすべてインデックスの中に入っていると、
テーブルアクセスをスキップできるのでとても速い。
select *してしまうと実テーブルを読まざるを得ない。

カバーリングインデックスというテクニックです
670NAME IS NULL:2009/08/21(金) 13:17:56 ID:???
>>669
へえー、そう言う事情があるんですか
今試してみたら両方のやり方で速度の差なかったけど、何十万件になると違いが出るんでしょうか。。
どうもありがとう
671NAME IS NULL:2009/08/21(金) 15:09:40 ID:???
テーブルがメモリに入りきらなくなるあたりから差が出るよ
672NAME IS NULL:2009/08/25(火) 00:55:42 ID:???
MySQL 5.1 にて
CREATE TABLE `word_count` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`word` varchar(12) NOT NULL,
`count` int(10) unsigned NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `word` (`word`)
)
と言うテーブルで、
select * from word_count where instr('ここに文章が入ります',word);
を実行すると、key が使われなくて速度が出ません。
もっと効率よくできる書き方はありませんか?
673NAME IS NULL:2009/08/25(火) 10:04:35 ID:???
Tritonnでがんばってください
http://qwik.jp/tritonn/
674NAME IS NULL:2009/08/25(火) 10:07:40 ID:???
>>673
全文検索とは逆のことがしたいのですよ。
instr('words',word) を早くしたいのです。
675NAME IS NULL:2009/08/25(火) 12:55:06 ID:???
全部見るしかないからむりじゃね
676NAME IS NULL:2009/08/25(火) 13:06:55 ID:???
TRIEとか使えないの?
677NAME IS NULL:2009/08/25(火) 13:45:02 ID:???
>>676
http://dev.mysql.com/sources/doxygen/mysql-5.1/trie_8c-source.html
これですか? ちょっと調べてみますが、具体的な使い方を教えていただけると助かります。
678NAME IS NULL:2009/08/28(金) 12:45:48 ID:???
質問です

MySQL5.4の機能であるBKAを使用したのだが
併せてsennaの日本語全文検索機能も使いたいと思っています。

5.4にはsennnaのパッチが当てられないので困っていますが
対応方法ほか良い案などありますでしょうか。

現在はTorittonの5.0,67を使ってますが外部結合が遅い・・・
679NAME IS NULL:2009/08/29(土) 19:06:41 ID:odCioAfi
MySQL Clusterって使ってる人いる?
これってDB鯖を複数立ち上げて外側では1つに見せるってものだよね
家で試験するとして
最低3台PCいるかな

DB 1号
DB 2号
クラスタ管理 1号
680NAME IS NULL:2009/08/29(土) 19:36:53 ID:???
トリガーについて教えてください
MySQL 5.1.35 Windows を使って勉強中なんですけど

table shouhin_master  ←マスターテーブル
code int
name varchar(20)

delete_flg tinyint

table data_tbl ←データテーブル
code int
data1


外部制約でshouhin_masterからcodeを消した時
data_tblの該当するcodeデータを消すようにはしているのですが。
マスターテーブルのdelete_flg に9を立てた時にトリガーを使って
data_tblの該当するcodeのデータを削除する事出来ますか?
出来るとしたら、どういうトリガーを書けば良い?
681NAME IS NULL:2009/08/29(土) 19:59:02 ID:???
>>679
パフォーマンス試験じゃなければ、そういう構築例は仮想マシンでやればいいから1台あればいいんじゃね?
682NAME IS NULL:2009/08/29(土) 23:59:26 ID:???
>>680
NewとかOldとか使え
begin
if new.delete_flg = 9 then
 delete from data_tbl where code = new.code;
end if;
end
683名無しさん@そうだ選挙に行こう:2009/08/30(日) 06:00:50 ID:???
>>682
ありがとうです。勉強させて頂きます。
684名無しさん@そうだ選挙に行こう:2009/08/30(日) 08:59:50 ID:8Tmsiy4Z
テーブルを4つjoinする方法がわかりません。アドバイスお願いします。

eventTbl
 id/kaijouId/eventName
sankashaTbl
 id/eventId/userId/comment
kaijouTbl
 id/kaijouName
userTbl
 id/userName
条件は以下です。
eventTbl.id = sankashaTbl.eventId
eventTbl.kaijouId = kaijouTbl.id
sankashaTbl = userTbl.id

この状況の時にそれぞれのカラムを全て引き出したいです
どう書いたら良いんでしょうか? userTbl以外の3つまでは以下のようにして出来たんですが。。

SELECT eventTbl.eventName, sankashaTbl.comment, kaijouTbl.kaijouName
FROM (eventTbl LEFT JOIN sankashaTbl ON eventTbl.id=sankashaTbl.eventId)
LEFT JOIN kaijouTbl ON eventTbl.kaijouId=kaijouTbl.id

これからさらにどうしたら良いでしょうか?
FROM ((eventTbl LEFT JOIN sankashaTbl ON eventTbl.id=sankashaTbl.eventId)
LEFT JOIN kaijouTbl ON eventTbl.kaijouId=kaijouTbl.id)
LEFT JOIN sanashaTbl ON sankashaTbl.userId=userTbl.id
としたらエラーしました
685名無しさん@そうだ選挙に行こう:2009/08/30(日) 09:36:25 ID:???

userTblをJOINしてなきゃ、そりゃエラーになるだろう
686名無しさん@そうだ選挙に行こう:2009/08/30(日) 09:47:03 ID:8Tmsiy4Z
どこでJOINしたら良いんでしょうか?
3つまでの解説はよく見かけるんですが、4つ以上は見つけられなくて困ってます
687名無しさん@そうだ選挙に行こう:2009/08/30(日) 09:47:43 ID:8Tmsiy4Z
お礼書き忘れた。
>>685 ありがとうございます
688名無しさん@そうだ選挙に行こう:2009/08/30(日) 10:48:01 ID:???
どこでも何も、そのまま続けて書けばいい。
FROM 〜 JOIN 〜 JOIN 〜 JOIN 〜
解説以前に、まずはマニュアル読むべき。
689名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:14:43 ID:8Tmsiy4Z
>>688
ありがとうございます
ずっとマニュアルは読んでるんですが、どうも理解できなくて。。
すみません、教えてください お願いします
690名無しさん@そうだ選挙に行こう:2009/08/30(日) 13:46:04 ID:LriVeEv0
phpからmysqlのテーブルに格納されている文字列をmysql_fetch_rowだとかmysql_fetch_assocだとかで読み出したときに、

「ソースの表示」をやってみると
「NULL文字を含むファイルです。半角スペースに変換してから表示します」
ってなって読みだした文字列の後に大量の半角スぺース(きっと元はNULL文字)が含まれているのが確認できるんですけど、
コレを無くすにはどうすればいいですかね。

AJAXで読み込んだときにNULL文字以下が表示されんくなってしまって困ってます。
誰か心当たりあったら解決策お願いします。
691690:2009/08/30(日) 14:56:51 ID:LriVeEv0
コレってむしろphp側の問題ですねorz
スレ違いでした。
phpのスレで訊いてきます。
692名無しさん@そうだ選挙に行こう:2009/08/30(日) 16:39:53 ID:???
これが新手のマルチ投稿か
693NAME IS NULL:2009/08/31(月) 16:21:21 ID:???
ランタイム情報の
Slave_runningの値「ON」か「OFF」をmysqlで求めるには、
どのようなクエリを渡せばいいのでしょうか?
694NAME IS NULL:2009/08/31(月) 21:14:54 ID:???
show status like 'Slave_running';
を、それぞれのプログラミング言語で
select文と同じように実行すれば取れるよ。
695693:2009/08/31(月) 22:39:04 ID:???
>>694
あ、ありがとうございます。
とりあえずphpからクエリを投げてみることにします。
phpmyadminばっかり使ってるとダメですね・・。
696NAME IS NULL:2009/09/01(火) 18:48:52 ID:???
相談です。

16桁の数字からなる商品番号を格納するカラムのデータ型は何がいいでしょうか?
(1) BIGINT型で、16桁の整数として格納する
(2) CHAR(16)型で、16個の文字からなる文字列として格納する

(1)と(2)と、どちらが検索が速いでしょうか?
データ件数は、10万〜100万件程度です。

アドバイスよろしくお願いします。
697NAME IS NULL:2009/09/01(火) 19:02:40 ID:???
>>696
64bitならもちろん、32bitでも、bigint のほうが早いはずだぜ。
まぁ、やってみたら?
698696:2009/09/01(火) 21:00:44 ID:???
>>697
アドバイス、ありがとうございます。
16桁の商品番号の格納は、BIGINT型で行ってみます!(・∀・)

一応ベンチマークも測ってみようと思って、今100万個のテストデータを作成中ですが、
MySQL5のストアドプロシージャとかで、乱数を一気に100万個ぐらい作る方法ありますかね?
=とりあえずPHPスクリプトで、5000個ずつINSERTしてます><
699NAME IS NULL:2009/09/02(水) 15:23:36 ID:???
Tritonn使ってるんだけど

Where ColName Like '%検索ワード%'

Where match(ColName) against('検索ワード')
って結果が違います

これって正常なこと?
何か根本的に間違ってたりしますか?
700699:2009/09/02(水) 15:45:21 ID:???
すまん、
書き込んだ直前以降はちゃんと同じ値になってました。
なんか構文間違ってたんだと思います。