のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,620,407人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

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

元スレ【MySQL】下らねぇ質問はID出して書き込みやがれ 2

mysql スレッド一覧へ / mysql とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
851 : NAME IS - 2012/09/05(水) 10:17:08.05 ID:??? (+27,+29,-53)
単にユニークなのを保証するだけだし
順番が必要なら別に項目作った方が・・・
Closeじゃなくてトランザクションで挟んでもよさそう。
853 : NAME IS - 2012/09/06(木) 04:58:02.61 ID:rA2q8u++ (+19,+29,-76)
現在は数千くらいのデータ量なんですが この先、数万→数十万は行きそうなので
ちゃんとインデックスを作っておこうと思いました。

DBにあんま詳しくないもんでよく分からないんですが
例えば特定のフィールドでLIKEで部分一致させるような場合
インデックスの種類はどのようなものが良いんでしょうか?

例えば、対象フィールドに PRIMARY として作っておくだけでも全然効果あるんでしょうか?

初歩的な質問ですみません。
854 : 853 - 2012/09/06(木) 06:05:50.08 ID:??? (+27,+29,-14)
あぁ…部分一致だとFULLTEXTになるんですか…
しかも色々と面倒そうですね…
やっぱあらかじめ自分で検索用単語データを別途作っておいた方が良いのかなぁ。
855 : 853 - 2012/09/06(木) 06:18:30.89 ID:??? (-17,+29,-83)
う~ん。よくわかんないけど…

何か検索された場合
単語とヒットしたデータの位置を格納したテーブルをまず検索する
そこでヒットしなければ改めて大元のデータ全部を検索する
ヒットしたら前述の単語とヒットしたデータの位置を格納するテーブルに
その情報を追加して行く…

みたいなのが一番効率と労力の軽減のバランスが良い気がするんですが。


FULLTEXTのインデックス化ってどんくらい使えるものなんでしょうか?
856 : 853 - 2012/09/06(木) 07:45:15.16 ID:??? (+25,+29,-24)
いやいやダメだ汗
ヒット数が多すぎるとデータ書き込みのコストがバカにならない…
検索する機会が少ないと問題ない気がするけど
一分に一回とかされたらもうダメ…
857 : NAME IS - 2012/09/06(木) 10:43:53.48 ID:??? (+26,+28,-14)
どこの図書館のシステム作ってるんだよw
858 : NAME IS - 2012/09/06(木) 14:11:08.92 ID:??? (-21,-30,-142)
>>853
今のところ、MySQLでは部分検索は前方一致しかINDEXが使えないので注意。
LIKE 'hoge%'の形ね。
LIKE '%hoge'やLIKE '%hoge%'だとINDEXはあっても使えない。

あと、FULLTEXT INDEXは今のところ日本語の検索には向かない。
あれは格納されているデータが半角スペースで単語に区切られている(=英文)と想定して
部分一致検索にINDEXを使える、というもの。

日本語でFULLTEXT INDEXを使える様にするにはmroongaとかがあるよ。

>>855で言っているやり方は転置インデックスと呼ばれるやり方で、
"MySQL 転置インデックス フルテキストインデックス"とかでググるとちらほら情報が出てくる。

がんばって。
859 : 853 - 2012/09/06(木) 15:06:21.07 ID:??? (+25,+29,-11)
>>858
うー なかなか部分一致を効率よくするには大変そうですね…
とりあえず言われた通り色々ググってがんがってみます。
860 : NAME IS - 2012/09/06(木) 22:42:49.23 ID:??? (-26,-29,-52)
基本的な話しで恐縮ですが
テーブルの件数が多くなってパフォーマンスが落ちた場合
エンジンがInnodbなら、InnodbBufferPoolをでっかくすると思うんだけど
エンジンがMyisamの場合、どこをいじればいいの?
867 : NAME IS - 2012/09/07(金) 15:32:24.31 ID:??? (+20,+26,-2)
>>866
ありがとう!
参考にしてやってみます!
871 : NAME IS - 2012/09/10(月) 09:15:02.86 ID:??? (-29,-30,-215)
genre_tbl
genre_id nt(5) PK
genre_kind varchar(30)
genre_idの99990,99999は特別な項目として予約
genre_idの99990,99999以外で使用している最大値を返す関数を作ろうとしています

select max(genre_id) from genre_tbl where genre_id not in (99990,99999);
で127が返ってきてるんで、これを
delimiter //
create function
sf_return_max_genre_id()
returns int
begin
return (select max(genre_id) from genre_tbl where genre_id not in (99990,99999) );
end //
delimiter ;

としたんですが、
+--------------------------+
| sf_return_max_genre_id() |
+--------------------------+
| 127 |
| 127 |
~と複数の行が返ってきてます。ストアドファンクションって戻り値は一つだけではないんですか?
873 : NAME IS - 2012/09/10(月) 09:55:06.21 ID:??? (-25,-30,-38)
>>871
それ、SELECT sf_return_max_genre_id() FROM genre_tblってやってない?
FROM指定すると、genre_tblの件数と同じだけ結果が返ってくるよ。
SELECT '0'だと1行だけ返ってくるけど、SELECT '0' FROM ..ってやると
テーブルの行数だけ返ってくるのと一緒。
874 : NAME IS - 2012/09/10(月) 09:59:37.13 ID:??? (+24,+29,-1)
>>873
あぁっやってましたorz
そうだったんだ。ありがとうございます!
875 : NAME IS - 2012/09/10(月) 10:51:44.63 ID:??? (+23,+29,+0)
>>872
なるほど、ちょっと確認してみます
ありがとうございました
888 : NAME IS - 2012/09/11(火) 15:52:18.70 ID:kpt7HVTE (-21,+28,-14)
ありがとうございました
メモリの設定を見直して様子を見てみます
890 : NAME IS - 2012/09/12(水) 08:17:03.96 ID:uxFpUlnF (+11,+11,-79)
適切なインデックスが設定されてるとして
億レベルのレコードがあるテーブルを
複数のテーブルに分ける(例えば1千万レコードずつ)のって検索速度的に意味ある?
891 : NAME IS - 2012/09/12(水) 10:46:52.69 ID:??? (+35,+29,-2)
>>890
あるよ。
パーティショニングの方が良いと思うけど。
893 : NAME IS - 2012/09/12(水) 21:19:58.85 ID:??? (+37,+29,-40)
>>891
横からで申し訳ないが、どのへんに効果があるのだろうか?
テーブルロックの影響範囲?(でも、ロックしたい時困りそう)
index 肥大化軽減?

ログテーブルなどは過去のデータを消しやすいように日付での
レンジパーティショニングしてるどそれ以外に
どういうメリットがあるか知りたいです。
894 : NAME IS - 2012/09/12(水) 22:55:31.63 ID:??? (+22,+29,-3)
上で早さだと言ってるじゃないかw
895 : NAME IS - 2012/09/13(木) 03:06:42.03 ID:??? (+27,+29,-10)
テーブル分割だと、連続していて欲しいデータが分断されちゃわない?
896 : 忍法帖【Lv= - 2012/09/13(木) 10:04:02.62 ID:??? (+27,+29,-9)
連続していて欲しいデータって、例えばどういうものかな?
899 : NAME IS - 2012/09/14(金) 17:55:48.87 ID:??? (-26,-29,-43)
エンジンにmroongaを使った場合、optimize tableやanalyze tableに対応してないみたいで
mroongaの公式ページにもそのあたりの情報が乗ってないんだけど、やらなくていい仕組みになってるのかな
それとも、専用のメンテコマンドがあるんでしょうか。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / mysql スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について