MySQL 総合 Part11
at DB
941:NAME IS NULL
07/09/19 06:30:18 thY75gxD
BLOBやTEXTカラムではインデクスする文字列の長さを指定する必要がある
って事なんだけど、エラーメッセージにもそのように書いてあるやん
942:NAME IS NULL
07/09/19 23:53:34
それだとuniqueにならない恐れがありますよね?
943:NAME IS NULL
07/09/20 01:29:51
>>942
そんなんなんとかしろ
944:932
07/09/20 10:47:44 fT/6kBZZ
レス遅くなりました。
とりあえずはMysqlで勉強したいと思います。
やはりSQL文をコマンドラインに打ち込んで覚えるのがいいですよね?
教本あるのですがさっぱり
945:NAME IS NULL
07/09/20 13:04:10
>>944
そう重います(笑)
946:NAME IS NULL
07/09/20 13:24:21
InnoDBを使ってるんですが、
innodb_file_per_tableオプションを付けたほうがパフォーマンスは上がるんでしょうか?
ibdata1が肥大化してすごいサイズになってるんですが、これってパフォーマンスには関係ないんでしょうか?
947:NAME IS NULL
07/09/21 00:31:02
InnoDB使ってるやつなんて いんの?
948:NAME IS NULL
07/09/21 12:34:52
MySQL User Conf Japan 2007 のInnoDBパフォーマンスチューニングでは?そんなパラメータの話は出てこなかった気が。
949:NAME IS NULL
07/09/21 14:21:48
>>946
関係ある。あたりまえだが、ファイルサイズが大きくなれば一般に遅くなる。
ibdata1が同一物理ディスク上にあるなら、Windowsでいうデフラグするだけで早くなる可能性はある。
950:NAME IS NULL
07/09/21 20:25:14
>>949
可変長カラムがあってもInnoDBはフラグメンテーション発生しないんでなかったっけ?
Winじゃなければ関係ないような。
951:NAME IS NULL
07/09/22 08:34:10
ファイルのフラグメントと、DBのフラグメントは違うんじゃないか?
ファイルが大きくても、たくさん開くよりは、たいていは速いよ。
952:NAME IS NULL
07/09/22 14:48:03 SdV4tJcU
DEFAULT CHARSET=utf8を付けるとエラーが出るのですが、
このバージョンではこの指定はサポートしていないということでしょうか?
・Win2k MySQL 4.0.20a-nt
・コマンド
CREATE TABLE `test` (
`id` INTEGER
) ENGINE=InnoDB DEFAULT CHARSET=utf8
・エラー
#1064 - 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 'DEFAULT CHARSET=utf8' at line 3
953:NAME IS NULL
07/09/22 16:14:45
utf8はMySQL4.1からサポート。
954:952
07/09/22 17:05:08
>>953
そういうことでしたか。
ありがとうございました。
955:NAME IS NULL
07/09/23 00:03:21 nJudGDWP
すいません、初心者です。
今、テーブル作ろうと思ってるんだけど、1/7/2007って値が入るカラムのデータ型ってなんになるのかな?
一応、mysqlのホームページでリファレンスマニュアル見たけどわからんかった・・・
956:NAME IS NULL
07/09/23 00:09:45
>>955
アメリカのデートだな
957:NAME IS NULL
07/09/23 00:16:14 nJudGDWP
>>そうなんすか?駄目理科・・・
テキスト型じゃまずいのかな・・・そっちの方向で考えているのですが・・・
初心者かっこわりー
958:NAME IS NULL
07/09/23 00:29:37 nJudGDWP
>956
テキスト型で行けました。ありがとうございました。
959:NAME IS NULL
07/09/23 01:27:31 FBJ1MWDN
すみません、DBを業務で触るのは久々なので教えて下さい…。
以前はSybase(バージョン失念)を2年程弄っていたのですが、
今回MySQL5.xを弄る事になりまして。
DATE_TIME型のカラムをCHAR型にCONVERTし当日よりn日前のレコードを抽出したいのです。
確かこのような構文だったと記憶しているのですが。
datediff ( convert (char(8), dd, now(), 112) - n
いまいち思い出せず…。
960:NAME IS NULL
07/09/23 01:52:04
DATETIMEをCHARにCONVERT?
逆じゃないの?
mysql> desc test;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| dd | char(8) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.21 sec)
mysql> select * from test where datediff(convert(dd, date), now()) = -22;
+----------+
| dd |
+----------+
| 20070901 |
+----------+
1 row in set (0.01 sec)
961:NAME IS NULL
07/09/23 02:02:19
dd列にINDEXが効くように直してみた。
mysql> select * from test where dd = date_format(date_sub(now(), interval 22 day), '%Y%m%d');
+----------+
| dd |
+----------+
| 20070901 |
+----------+
1 row in set (0.11 sec)
最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4086日前に更新/290 KB
担当:undef