X



トップページDB@2ch掲示板
1002コメント293KB
MySQL 総合 Part26 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2017/07/13(木) 21:39:55.28ID:n0Ab2lD/
オラクル社によるオープンソースのRDBMS、MySQLの総合スレです。

MySQL 総合 Part25 [転載禁止](c)2ch.net
http://mevius.2ch.net/test/read.cgi/db/1424001054/

MySQL Developer Zone http://dev.mysql.com/
MySQL 5.5 マニュアル (E) http://dev.mysql.com/doc/refman/5.5/en/index.html
MySQL 5.1 マニュアル (J) http://dev.mysql.com/doc/refman/5.1/ja/index.html

日本MySQLユーザ会(MyNA) http://www.mysql.gr.jp/
ML過去ログ http://www.mysql.gr.jp/mysqlml/mysql/

ここで質問をする前に、MyNAでのFAQと心得の条を最初に確認しましょう。
http://www.mysql.gr.jp/frame/modules/bwiki/?FAQ
http://www.mysql.gr.jp/frame/modules/bwiki/index.php?%BB%A8%B3%D8%2F%BF%B4%C6%C0
0698NAME IS NULL
垢版 |
2021/09/12(日) 17:55:41.99ID:AZgTXlMX
>>697
処理速度を優先するために一気に上がる仕様になっている。
0699NAME IS NULL
垢版 |
2021/10/02(土) 15:25:50.62ID:GWb8pf12
Windows上のクライアントツールってワークベンチが1番人気?
0700NAME IS NULL
垢版 |
2021/10/02(土) 15:26:27.01ID:GWb8pf12
IDがはてなってどうやってんの?
0701NAME IS NULL
垢版 |
2021/10/02(土) 16:11:44.03ID:???
MySQLはgrepコマンドよりも検索が遅いらしいですが
どうにかして速くする方法はありませんか?
0702NAME IS NULL
垢版 |
2021/10/02(土) 16:25:54.51ID:???
むしろgrepよりも速いDBなんかあんのかよ?w
全文検索したけりゃ転置インデックスでもはれ。
0703NAME IS NULL
垢版 |
2021/10/02(土) 18:21:22.11ID:???
むしろgrepより遅いDBなんてあんのかよww
RDB理解してなさすぎw
0705NAME IS NULL
垢版 |
2021/10/02(土) 20:21:21.27ID:???
>>702
あ、いえ、全文検索じゃないです。
商品IDがキーになっている検索です。
likeみたいなものはないですね。
0706NAME IS NULL
垢版 |
2021/10/02(土) 20:23:24.71ID:???
6倍ぐらいMySQLが遅いようです。
0707NAME IS NULL
垢版 |
2021/10/02(土) 20:24:19.10ID:???
>>705
じゃあインデックスをはるだけやろ。
grepなんかよりもはるかに速いわ!
0708NAME IS NULL
垢版 |
2021/10/02(土) 22:55:41.11ID:???
>>707
不思議なことにインデックス貼ってるんですよ
0709NAME IS NULL
垢版 |
2021/10/02(土) 23:01:16.73ID:???
show create table テーブル名 と
実行しているSQL文を晒せ
0710NAME IS NULL
垢版 |
2021/10/02(土) 23:06:09.70ID:???
前提が間違ってるだけやろ
0711NAME IS NULL
垢版 |
2021/10/02(土) 23:25:15.89ID:???
論文出しておきますね。
これの7ページ、3.1 検索処理 に比較結果が載っています。

ユニケージ開発手法に基づく Unix ファイルシステムとシェルを用いたデータベースの構築と操作
https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_uri&;item_id=178874&file_id=1&file_no=1

> ユニケージにより構築されたデータベースは特段の高速化の工夫を施さずとも、
> MySQLより高速であることがわかった
0712NAME IS NULL
垢版 |
2021/10/02(土) 23:37:07.92ID:???
>>708
EXPLAINで、インデックスがホントに使われてるか確認しろ。

まさか、ストレージエンジンがヘンなのとか、レコード数がメチャ少ないとか、ドケチ設定にしてるとか、そういうDBに超不利な比較をやっとらんやろな?
0713NAME IS NULL
垢版 |
2021/10/02(土) 23:43:54.80ID:???
>>712
ちゃんと実行条件を揃えて計測しているようですよ


> 10^6件レコードのテーブルに対して実行し、timeコマンドによる実行時間を計測した。
> MySQLへのクエリ送信には、mysqlコマンドを使用した。

> ユニケージでは"商品ID"フィールドをキーとしてファイルをソートしておき 、
> MySQLでは同フィールドをプライマリキーとしてテーブルを作成した。

> mysqlコマンドはソケットインタフェースを経由する。ユニケージでも実行条件を
> 揃えるため、sshコマンドを利用してネットワーク越しに処理を実行して結果を取得した
0714NAME IS NULL
垢版 |
2021/10/03(日) 00:04:11.31ID:???
ユニケージww
こんなとこまで出張ってくるなよw
0715NAME IS NULL
垢版 |
2021/10/03(日) 00:18:42.70ID:???
実行条件を揃えてあるとは言いがたいな
これなら何の検索かけて無くても同じ速度出るだろ
0716NAME IS NULL
垢版 |
2021/10/03(日) 00:28:47.77ID:???
コレはワロス
何と何を比較した結果か全く理解してないのな
よくこんなんで論文とか書くわ
0717NAME IS NULL
垢版 |
2021/10/03(日) 00:36:00.92ID:???
実行条件揃えたというなら、
このテーブルとファイルをこのまま使って
1000件の商品IDをランダムに検索かけて
その商品名を表示させてみ
0718NAME IS NULL
垢版 |
2021/10/03(日) 00:45:50.98ID:???
ユニケージはどこかでHadoopよりも速いって書いていた気がします
たぶんローカルでの検索 vs ネットワーク越しのHadoopサーバーからの検索でしょう

データ更新やデータ同期の話を全部すっ飛ばして
ローカル検索、しかもインデックスを使わない全件検索の比較しかしないで
速いと言っていただけな気がします。
0719NAME IS NULL
垢版 |
2021/10/03(日) 00:53:08.90ID:???
ここで例としてあげられたロジックらしきものって
ファイルの先頭から条件を満たすレコードを抜き出して
計算し、表示しているだけだよ
シーケンシャルファイルのバッチ処理と同じ
しかも予めソートされているとなれば一気読み一気処理
0720NAME IS NULL
垢版 |
2021/10/03(日) 00:56:42.15ID:???
参考文献

[1] UNIXという考え方・・・単にUNIXの考え方を書いてある本
[2] The Open Group Base ・・・ただのPOSIXの仕様
[3] 松田康之 川下からの(略)・・・ ズブズブの関係
http://www.shoninsha.co.jp/modules/computer3/2009/07/14/14/
[4] NYSOL・・・MCMD2: Mコマンドとは - NYSOL(ページののタイトル)
https://www.nysol.jp/mcmd2/jp/sect-whatis.html
> 大規模表構造データ(CSV)を高速に処理する目的で開発されたコマンド群である。
> ある大企業で実施された大規模システム開発プロジェクトにおいて
> 「松田康之氏」(上の人)が発案したものであり

大規模表構造データ(CSV)とはただのCSVのことのようである

https://www.nysol.jp/mcmd2/jp/sect-csv.html
> MCMDが処理する表構造データはFigure 2.5に例示されるような
> CSV(Comma Separated Values)フォーマットである

[5] 當仲 寛哲 ユニケージ原論・・・この論文書いた人
[6] POSIX中心主義・・・ユニケージの社員が言ってること
[7] ものづくりのための・・・同上


参考文献
0721NAME IS NULL
垢版 |
2021/10/03(日) 00:59:35.02ID:???
ガラパゴス文化
闇が深いな・・・
0722712
垢版 |
2021/10/03(日) 01:23:08.67ID:???
なんや、マジメに相手してやって損したわ。。。
アホらし。
0723NAME IS NULL
垢版 |
2021/10/03(日) 08:09:12.03ID:???
この場合はローカルかネットワーク越しかはほとんど関係ない
SQL見ればわかるやろ

RDB使ってこんな設計するやついたら殴り倒すわ
0724NAME IS NULL
垢版 |
2021/10/21(木) 00:00:36.16ID:Fw+i2C3R
VoicyとNFTアートとNFTゲームとDeFiとnoteに今すぐ参入したほうがいいぞ。
特にVoicyとNFTアートとDeFiはこれから伸びるだろうからおススメ
NFTアートとDeFiはこれから100倍規模の市場になるだろう!
0725NAME IS NULL
垢版 |
2021/12/24(金) 16:33:02.38ID:???
mysqlのストレージエンジンにmemoryってのがあるけど、これについて確認なんですけど

これって利用する場合起動のたびにcreate tableしてデータをinsertする、そして
シャットダウン時に更新されているならディスクに書き戻す必要があるって事だよね?
0727735
垢版 |
2021/12/24(金) 22:15:38.69ID:???
やはり。使う状況を考えないといけないエンジンだなぁ。
0729NAME IS NULL
垢版 |
2021/12/24(金) 22:35:45.81ID:???
そんな考えることでは。w
速度優先の小さいテーブルをテンポラリとかキャッシュとかで使いたいときだけ。
0730NAME IS NULL
垢版 |
2021/12/29(水) 08:26:08.25ID:???
とある絞り込み条件での
・総件数
・特定の並び順での任意の範囲のレコード(1000件ある内の100〜200行目など)
の2つを取りたい場合ってどうやる?

同一の絞り込み条件のクエリ2回投げる?
0732NAME IS NULL
垢版 |
2021/12/29(水) 11:41:49.86ID:???
ストアード組んで中でごにょごにょやるとか
0733NAME IS NULL
垢版 |
2021/12/29(水) 12:42:38.60ID:???
適切にインデックスが張られてれば数数えるのは低コストだしね
0734NAME IS NULL
垢版 |
2022/01/14(金) 13:15:29.37ID:???
UNIQUE制約って、インデックスとしても機能すんだっけか
0735NAME IS NULL
垢版 |
2022/01/14(金) 16:40:07.52ID:???
PLAN見りゃわかるやろ
0736NAME IS NULL
垢版 |
2022/01/14(金) 16:46:26.02ID:???
逆で、UNIQUE制約のためにはインデックスが必須なんちゃうかったっけ?
0737NAME IS NULL
垢版 |
2022/01/14(金) 16:46:31.67ID:???
そう簡単には…… わからんのや―――
0738NAME IS NULL
垢版 |
2022/01/14(金) 19:08:38.95ID:wuFJevxq
勝手にインデックスが作られているだろうに
0739NAME IS NULL
垢版 |
2022/01/17(月) 23:48:21.85ID:FcXAgVvq
以下のようなデータがあるとします。
name|feature
バナナ|黄色
バナナ|甘い
みかん|オレンジ
みかん|甘い

「featureが黄色で甘い」=バナナを抽出したいのですが、
SELECT * FROM fruits WHERE feature IN('黄色','甘い')
としても、「みかん」まで抽出されてしまいます。

だからといって
SELECT * FROM fruits WHERE feature='黄色' AND feature='甘い'
だとヒットしません。

サブクエリを使う以外で、複数AND条件に一致するデータを抽出する方法はないでしょうか?
0740NAME IS NULL
垢版 |
2022/01/18(火) 07:22:58.31ID:???
バナナ1行返ればいいなら group by ~ having で
条件に合うものを count したり sum したり
2行欲しいならサブクエリ必要と思われ
0741NAME IS NULL
垢版 |
2022/01/18(火) 10:39:28.57ID:???
>>739
素直にサブクエリ使いなよ
考えるだけ無駄だし時間もかかる
0742NAME IS NULL
垢版 |
2022/01/18(火) 10:45:43.07ID:???
わかりました。そうします。お二人ともありがとうございました。
0743NAME IS NULL
垢版 |
2022/01/18(火) 11:42:01.32ID:???
JOINでなんとかならんか?
最近使わないからすぐ出てこないけど。
0744NAME IS NULL
垢版 |
2022/01/18(火) 11:55:22.11ID:???
カテゴリーが異なるものを同じカラムで扱うのは無理がある
0745NAME IS NULL
垢版 |
2022/01/18(火) 13:55:22.25ID:???
>>744
いや、それは解釈による。
プロパティだと思えば複数あって当然。
0746NAME IS NULL
垢版 |
2022/01/18(火) 17:07:52.36ID:???
>みかん|オレンジ

は?ってなったわw
色のことね
0748NAME IS NULL
垢版 |
2022/01/18(火) 17:46:26.63ID:???
>>739
コスト的にはサブクエリと同じかもしれんがself joinでいけるやろ

SELECT * FROM fruits a INNER JOIN fruits b ON a.name = b.name
WHERE a.feature='黄色' AND b.feature='甘い'
もしくは
SELECT * FROM fruits a INNER JOIN fruits b ON a.name = b.name AND a.feature='黄色' AND b.feature='甘い'
0749NAME IS NULL
垢版 |
2022/01/18(火) 22:07:31.76ID:???
>>748
それでは検索したいものが3つ4つと増えた時に困る
プログラムで生成するのは余裕だろうが
あるいはgroup by使ってもいいけどサブクエリNGとした理由が何かだね
0750NAME IS NULL
垢版 |
2022/01/19(水) 00:56:45.96ID:???
>>749
> それでは検索したいものが3つ4つと増えた時に困る

それはサブクエリも似たようなもんやろ。
0751NAME IS NULL
垢版 |
2022/01/19(水) 01:06:04.71ID:???
「featureが黄色」でname取得
「featureが甘い」でname取得
何れにも存在するname取得

これが簡単そう
0753NAME IS NULL
垢版 |
2022/01/19(水) 02:00:59.49ID:???
>>750
検索対象が増えるたびに結合数が増えてくんだが、、、
あとselect句のことも考えてあげて
0754NAME IS NULL
垢版 |
2022/01/19(水) 04:08:47.62ID:???
>>753
それはサブクエリも似たようなもんやろ。
4レスぶり2回目。
0756NAME IS NULL
垢版 |
2022/01/19(水) 09:02:37.18ID:???
結局サブクエリの勝ち
0758NAME IS NULL
垢版 |
2022/01/19(水) 11:26:33.31ID:???
group by havingしたサブクエリの結果で
もう1回データ取ってくるんやろ

MySQLはgroup byされた任意の数の行を
列にピボットできる関数ないからね
0759NAME IS NULL
垢版 |
2022/01/19(水) 21:41:46.17ID:???
>>757
select * from fruits x where
(select count(*) from fruits y where
y.name = x.name and
y.feature in ('黄色', '甘い')) = 2;
0760NAME IS NULL
垢版 |
2022/01/19(水) 23:01:36.50ID:???
結局、プログラム使えてDBの負荷下げるなら、
検索の数だけSQL実行するのが良いんじゃないか?
その方がシンプルだし、バグが発生しづらいだろ
0761NAME IS NULL
垢版 |
2022/01/20(木) 02:43:35.03ID:???
>>759
そんなサブクエリよりは結合のが速いんちゃうの?
マイちゃんマリアちゃんならとくに。

レコード数とかインデックスとかカーディナリティとかメモリの余裕とかにもよるかもしらんが。
0762NAME IS NULL
垢版 |
2022/01/20(木) 16:02:24.62ID:B9y3aHSL
ネタかもしれないがたまにはSQLを書いてみる。

SELECT * FROM fruits WHERE name='バナナ ' AND feature IN('黄色','甘い');
0763NAME IS NULL
垢版 |
2022/01/20(木) 18:19:21.46ID:???
それじゃあ駄目だな
やりなおし
0764NAME IS NULL
垢版 |
2022/01/20(木) 22:45:57.14ID:???
妖しげなSQLで
SELECT name FROM (
SELECT distinct name, feature FROM fruits WHERE feature IN('黄色','甘い') GROUP BY name,feature) w
GROUP BY name HAVING COUNT(name) = 2;
0765NAME IS NULL
垢版 |
2022/01/21(金) 21:29:38.51ID:???
>>764
count(distinct feature) 使えばネストしなくていいよ
0767NAME IS NULL
垢版 |
2022/01/22(土) 00:33:56.45ID:???
>>765
考えたんですが、私の頭ではちょっと無理っぽい
0768NAME IS NULL
垢版 |
2022/01/22(土) 09:12:32.06ID:???
>>767
その前にname,feature には一意制約付いてないのかな
>>764 は付いてない可能性を考慮して書いたと思うが

select name from fruits
where feature in ('黄色', '甘い')
group by name
having count(distinct feature) = 2;

一意制約ついているなら count(*) でOK
0769NAME IS NULL
垢版 |
2022/01/22(土) 10:29:43.26ID:???
739です。みなさん色々議論していただきありがとうございます。
まさに、>>768の書き方がシンプルで目的通りになりました!
サブクエリやプログラムで回す事を考えていましたが、
768のソースがわかりやすく、コストも少ないと思います。
本当に素晴らしいSQLをありがとうございました
0770NAME IS NULL
垢版 |
2022/01/22(土) 11:50:27.90ID:???
>>768
確かに、一意制約がないという前提で書いてました
質問者が書いてないことについては最悪を想定ですね
0772NAME IS NULL
垢版 |
2022/01/22(土) 16:47:05.02ID:t687Mpp8
まったくおもしろくない
0773NAME IS NULL
垢版 |
2022/02/17(木) 14:03:38.09ID:Pqprfh83
1秒に5回ぐらいのfloat x 5のデータ
最初の一年分をクエリするとすぐレスポンスあるのに
2年目以降で遅くなるの何故だ
0774NAME IS NULL
垢版 |
2022/02/17(木) 14:40:41.52ID:???
>>773
1. テーブル定義、インデックス定義、データ件数
2. 最初の1年分を取得するクエリ、2年目以降を取得するクエリ
3. それぞれのクエリのEXPLAIN ANALYZEの結果
4. MySQLバージョン、稼働環境

遅い原因を確認するためには1~3の情報は最低必要

ただ1レコードfloat(4バイト) x 5カラムで
秒間5件の1年分を全部取得するようなクエリなら
容量が大きいので遅くてもなんら不思議はない
0775NAME IS NULL
垢版 |
2022/02/17(木) 16:31:55.58ID:+0IFei8M
CREATE TABLE mytable (`id` bigint unsigned NOT NULL AUTO_INCREMENT, `timestamp` bigint unsigned , `v1` float , `v2` float, `v3` float, `v4` float , PRIMARY KEY(`id`)) ;

select * from mytable where timestamp <= 1645082937 limit 30000
0776NAME IS NULL
垢版 |
2022/02/17(木) 17:04:19.46ID:???
ぱっと見ですまんが、timestampにもインデックス張ってみたら
0777NAME IS NULL
垢版 |
2022/02/17(木) 18:42:48.85ID:???
>>776
パッと見でもそうでなくても、絶対そうやろ。w
0778NAME IS NULL
垢版 |
2022/04/05(火) 01:18:29.18ID:ha4lgt85
timestampという名前のカラムのデータ型がbigintというあたりでネタだと気づけよ!
0779NAME IS NULL
垢版 |
2022/04/05(火) 13:10:48.25ID:???
熟考の末レスしたお前はえらいぞ
0780NAME IS NULL
垢版 |
2022/04/25(月) 12:41:06.10ID:211uLVfG
犬のマイクロチップ義務化法。
これがスマートダストサイズになって痛みもない、
ってことになったら人間にも適用しようとするんだろうね。
://twitter.com/MIYAKE_YOHEI/status/1254403308137009152?s=20
新型コロナワクチン接種証明書のインプラント 希望者に埋め込み スウェーデン
10〜15年後にはマイクロチップを埋め込んだ人が一般的になる。
://twitter.com/amanomotoyasu/status/1473396195355951104?s=20
山梨の株式会社「PATIC TRUST」のホームページに、現在は削除されていますが、
プロジェクトの目的はRFIDマイクロチップを全ての人に埋め込み、
国際的なデジタル認証システムを構築することであると書かれています。
://twitter.com/shantiphula/status/1313095383271174150?s=20

https://twitter.com/5chan_nel (5ch newer account)
0781NAME IS NULL
垢版 |
2022/06/07(火) 16:14:33.09ID:???
mariadbとmysqlってどっちが良いの?
0782NAME IS NULL
垢版 |
2022/06/08(水) 09:29:42.14ID:???
早く人間用マイクロチップほしいよね
家のカギとSuicaを手の甲に内蔵したいわ
0783NAME IS NULL
垢版 |
2022/06/08(水) 09:32:17.45ID:???
>>781
mariadbのほうが高機能
mysqlはお金を払うとサポートが受けられる
0785NAME IS NULL
垢版 |
2022/06/21(火) 21:27:55.85ID:iceFzK7e
以下のような2つのテーブルを紐付けたい場合にはどう書けばよいのでしょうか?
具体的には、Prodテーブルのフィールドをshopsテーブルのnameを共通で紐付けたいです。
* shop_id => Shops.name
* send_shop_id => Shops.name 

Prodテーブル
id name shop_id send_shop_id
1 Mac 4 1
2 MacBook 3 2
3 MacBookAir 2 3
4 iPhone 1 4
Shops
id name
1 北海道
2 東京
3 大阪
4 沖縄
期待する結果
Prod.id Prod.name Shop.name as shop_id Shops.name as send_shop_id
1 Mac 沖縄 北海道
2 MacBook 大阪 東京
3 MacBookAir 東京 大阪
4 iPhone 北海道 沖縄
0786NAME IS NULL
垢版 |
2022/06/21(火) 22:14:10.69ID:El8AozS9
以下のような2つのテーブルを紐付けたい場合にはどう書けばよいのでしょうか?
具体的には、Prodテーブルのフィールドをshopsテーブルのnameを共通で紐付けたいです。
* shop_id => Shops.name
* send_shop_id => Shops.name 

Prodテーブル
id name shop_id send_shop_id
1 Mac 4 1
2 MacBook 3 2
3 MacBookAir 2 3
4 iPhone 1 4
Shops
id name
1 北海道
2 東京
3 大阪
4 沖縄
期待する結果
Prod.id Prod.name Shop.name as shop_id Shops.name as send_shop_id
1 Mac 沖縄 北海道
2 MacBook 大阪 東京
3 MacBookAir 東京 大阪
4 iPhone 北海道 沖縄
0787NAME IS NULL
垢版 |
2022/06/21(火) 22:44:41.30ID:???
>>786
2回ジョインして

from Prod p
join Shop s1 on p.shop_id = s1.id
join Shop s2 on p.send_shop_id = s2.id
0788?
垢版 |
2022/06/22(水) 10:31:19.26ID:9Ki94OV1
>>787
ありがとうございます!

助かりました!
0790NAME IS NULL
垢版 |
2022/06/22(水) 16:12:45.89ID:???
>>789
ジョインジョインで解決しました!
ありがとうございます!
0791NAME IS NULL
垢版 |
2022/06/28(火) 12:16:02.32ID:???
基本的にOracleでライセンス買ってるとMySQLでも商用ライセンス買う必要有るの?
0792NAME IS NULL
垢版 |
2022/06/28(火) 12:17:04.87ID:???
>>791
ああ前提がOracle→MySQLへのマイグレーション考えてます
0793NAME IS NULL
垢版 |
2022/06/28(火) 13:26:31.37ID:???
そんなことは無いです
普通にOracle捨ててMariaDBにしました
死ぬほどつらかったけど楽勝でした
0794NAME IS NULL
垢版 |
2022/06/28(火) 21:23:23.75ID:ZYAZxdfP
>>793
MariaDBはゴミ
0796NAME IS NULL
垢版 |
2022/07/03(日) 20:04:17.63ID:???
デストリはどこもかしこもmiria使ってるな
ユーザーにとってはどっちでも良いんだけどね
0797NAME IS NULL
垢版 |
2022/07/10(日) 03:52:08.81ID:NDXT5sxv
indexの数値(float)を間違って10大きな数値にしてしまった
一括で10減らすコマンドないでしょうか
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況