私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2
mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 :
レスフィルター : (試験中)
>>700
日本語だと単語境界が上手く判定しづらいってことで、
2文字ずつにトークナイズするのが主流っぽい。
プラグインを入れられる環境ならmroongaを使えば、特にSQLをいじらずにその辺を上手くやってくれるらしい。
ただしよく落ちると知り合いが嘆いてる。
SQLを書き換えても良いなら"MySQL 転置インデックス"でググるとヒントがあるかも。
ただしすごく重いと知り合いは嘆いてる。
俺はどっちも試してない。。(´・ω・`) ごめんよ。
日本語だと単語境界が上手く判定しづらいってことで、
2文字ずつにトークナイズするのが主流っぽい。
プラグインを入れられる環境ならmroongaを使えば、特にSQLをいじらずにその辺を上手くやってくれるらしい。
ただしよく落ちると知り合いが嘆いてる。
SQLを書き換えても良いなら"MySQL 転置インデックス"でググるとヒントがあるかも。
ただしすごく重いと知り合いは嘆いてる。
俺はどっちも試してない。。(´・ω・`) ごめんよ。
>>701
ありがとうございます。参考になりました。
ありがとうございます。参考になりました。
すみません。それと、item_id = 3, 2はこの順番になるようにしたいです。
(CASE WHEN item_id = 3 or item_id = 2 THEN 1 ELSE 0 END) DESC
と書ければすこしはマシになるのですが。
(CASE WHEN item_id = 3 or item_id = 2 THEN 1 ELSE 0 END) DESC
と書ければすこしはマシになるのですが。
?のバージョンで統計情報の収集を行い、その後、統計情報が正しく実行出来たか確認する方法を教えて下さい。
なお、アナライズ実行時の返り値以外の方法でお願いします
なお、アナライズ実行時の返り値以外の方法でお願いします
多分ない
まず、各コネクションは独立して、不可侵なことが保証されているので、
統計情報の更新を実行したコネクション以外状況は判断できない。
後から確認したいなら、どこかにログを残しておくぐらいかな。
まぁ、統計情報更新クエリがDB障害によりエラーになった場合は
MySQLログに出力される可能性はあるので、ログを監視すれば
分かるかもしれないが、そういう時は統計情報以前にDBがおかしい。
質問の趣旨が「統計情報が不正確でオプティマイザが正常に判断できない」
というものなら、「そういうものです」。
統計情報はMySQLに限らずほとんどのRDBMSがサンプリングで行うので、
サンプルで取り上げられたデータの偏りで決まってしまう。
普通は保存データ量が増えるに従いデータの中身も程よく分散してくるので、
オプティマイザも正しく判断するようになります。
全データを網羅して統計情報を構築するRDBMSってあるのかな?
まず、各コネクションは独立して、不可侵なことが保証されているので、
統計情報の更新を実行したコネクション以外状況は判断できない。
後から確認したいなら、どこかにログを残しておくぐらいかな。
まぁ、統計情報更新クエリがDB障害によりエラーになった場合は
MySQLログに出力される可能性はあるので、ログを監視すれば
分かるかもしれないが、そういう時は統計情報以前にDBがおかしい。
質問の趣旨が「統計情報が不正確でオプティマイザが正常に判断できない」
というものなら、「そういうものです」。
統計情報はMySQLに限らずほとんどのRDBMSがサンプリングで行うので、
サンプルで取り上げられたデータの偏りで決まってしまう。
普通は保存データ量が増えるに従いデータの中身も程よく分散してくるので、
オプティマイザも正しく判断するようになります。
全データを網羅して統計情報を構築するRDBMSってあるのかな?
管理ツールのお勧めってありますか?
adminer あたりにしようかと思ってますが
adminer あたりにしようかと思ってますが
>>711
ゴキブリってどや
ゴキブリってどや
table(
uid int unique,
tid int
)
SELECT * FROM table;
でリクエストした時、例えばリクエスト結果の中に tid=AAA が何番目にあるかを
知る方法ってあるんでしょうか?
uid int unique,
tid int
)
SELECT * FROM table;
でリクエストした時、例えばリクエスト結果の中に tid=AAA が何番目にあるかを
知る方法ってあるんでしょうか?
OS,バージョンとかデータベースやテーブルの日本語の設定はどうなっているかとか情報を全然出さずに
>>714
ごめん、下策しか思いつかなかった。
SET @a:=0; SELECT * FROM (SELECT @a:=@a+1 AS rownum,`table`.* FROM `table`) AS dummy WHERE tid = ..;
1. tableを2回フルスキャンするからすごく重い
2. テンポラリテーブルを使うので、max_heap_table_sizeとtmp_table_sizeをそれなりの値にしないとMyISAMに変換されて更に重い
3. tidにINDEXが貼ってあってもサブクエリ化するので利かなくなる
ごめん、下策しか思いつかなかった。
SET @a:=0; SELECT * FROM (SELECT @a:=@a+1 AS rownum,`table`.* FROM `table`) AS dummy WHERE tid = ..;
1. tableを2回フルスキャンするからすごく重い
2. テンポラリテーブルを使うので、max_heap_table_sizeとtmp_table_sizeをそれなりの値にしないとMyISAMに変換されて更に重い
3. tidにINDEXが貼ってあってもサブクエリ化するので利かなくなる
>>721
日時カラムを持って、日時でソートすればええんでわ。
日時カラムを持って、日時でソートすればええんでわ。
入門書を読みながら、XAMPPでMySQLをはじめたのですが、
テーブルにレコードを追加するSQL文(INSERT INTO~)を実行しても「返り値が空でした。」となってしまい、レコードが追加されません。
どのような原因が考えられますでしょうか?
テーブルにレコードを追加するSQL文(INSERT INTO~)を実行しても「返り値が空でした。」となってしまい、レコードが追加されません。
どのような原因が考えられますでしょうか?
それはMySQLのコンソールで直やってみたのか、それともPHP経由とかのどっち?
MySQLのコンソールで直やってみて駄目っていうなら入力間違いだし、直でならOKっていうなら
PHPとかの設定間違いなんだろうし
MySQLのコンソールで直やってみて駄目っていうなら入力間違いだし、直でならOKっていうなら
PHPとかの設定間違いなんだろうし
>>721
結果セット内での位置がわかったところで
結局は一度全部取得しなきゃならないわけで、
取得するに主キーをハッシュキーにしたハッシュテーブルを一緒に組み立てて
逆引き出来るようにしたらいいじゃないかな
結果セット内での位置がわかったところで
結局は一度全部取得しなきゃならないわけで、
取得するに主キーをハッシュキーにしたハッシュテーブルを一緒に組み立てて
逆引き出来るようにしたらいいじゃないかな
>>726
こうやってスレを見てると、ループで回すのが普通って感じがしてきました。
質問を重ねて申し訳無いのですが、
select * from table where tid='AAA';
としようとする時、tid='AAA' を含む、tid='AAA' の前後 10 件を取得する。
と言ったのは、どう書けば良いのでしょうか?
こうやってスレを見てると、ループで回すのが普通って感じがしてきました。
質問を重ねて申し訳無いのですが、
select * from table where tid='AAA';
としようとする時、tid='AAA' を含む、tid='AAA' の前後 10 件を取得する。
と言ったのは、どう書けば良いのでしょうか?
ググッてたら、order を使えば前後が取得出来そうですね
SQL って発想力必要だなぁ
SQL って発想力必要だなぁ
>>725
遅レスすみません。自己解決しました。
SQLに直だったのですが、入力するフォームが違っていたようです。
SERECTなどの形式がボタンを押すだけで出てくるフォームがあったので、
そこかと思っていたのですが、違いました。なぜそこではダメだったのかは未だ謎です。
遅レスすみません。自己解決しました。
SQLに直だったのですが、入力するフォームが違っていたようです。
SERECTなどの形式がボタンを押すだけで出てくるフォームがあったので、
そこかと思っていたのですが、違いました。なぜそこではダメだったのかは未だ謎です。
非同期で SQL を発行しない限り、実行時間は PHP > MySQL である。
PHP の時間時間の制限を php.ini に書けば良い。
ただし Apach のタイムアウトもあるから、気を付けて。
PHP の時間時間の制限を php.ini に書けば良い。
ただし Apach のタイムアウトもあるから、気を付けて。
>>742
レスありがとうございます。
ご推察の通り、原因はテーブルロック時に行われる暗黙のCOMMITにありました。
自動コミット機能をオフにすることで、高速に動作させることが出来ました。
ありがとうございました本当に助かりました!
レスありがとうございます。
ご推察の通り、原因はテーブルロック時に行われる暗黙のCOMMITにありました。
自動コミット機能をオフにすることで、高速に動作させることが出来ました。
ありがとうございました本当に助かりました!
>>744
おまけのつもりだったんだけど、助けになれたなら良かった!
おまけのつもりだったんだけど、助けになれたなら良かった!
tritonnとphp、IISを使用した検索システムがあります。
タスクを使用して朝と昼にoracleのテーブルを基にmysqlにテーブルを作成する運用をしています。
テーブル作成直後は検索効率が落ちるため、select * from db1をぶちこんで全てのレコードを
テーブルにキャッシュさせるようにしたいのですが、タスクスケジューラやbat処理では
自動でキャッシュされなくて困っています。
現状batファイルと同じ内容を記述したphpを実行させるボタンをページに作成しておき、
クリックしてキャッシュさせています。
違いといえばcmdが絡むので、shiftjisを経由していることくらいなのですが、
select文実行前にはutf8を使用するようには記述しています。
ご助言をいただけると助かります。
タスクを使用して朝と昼にoracleのテーブルを基にmysqlにテーブルを作成する運用をしています。
テーブル作成直後は検索効率が落ちるため、select * from db1をぶちこんで全てのレコードを
テーブルにキャッシュさせるようにしたいのですが、タスクスケジューラやbat処理では
自動でキャッシュされなくて困っています。
現状batファイルと同じ内容を記述したphpを実行させるボタンをページに作成しておき、
クリックしてキャッシュさせています。
違いといえばcmdが絡むので、shiftjisを経由していることくらいなのですが、
select文実行前にはutf8を使用するようには記述しています。
ご助言をいただけると助かります。
sage消し忘れました。
前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
みんなの評価 : 類似してるかもしれないスレッド
- 【】 MySQLを買収したSunを買収したOracleを 【】 (112) - [25%] - 2023/1/22 14:15
- 【この先一体】MySQL 総合 Part15【どうなるの】 (1001) - [21%] - 2009/11/22 13:31 ○
トップメニューへ / →のくす牧場書庫について