タグ付けされた質問 「mysql」

MySQLのすべてのバージョン(Microsoft SQL Serverではありません)。質問に関連する場合は、mysql-5.7のようなバージョン固有のタグも追加してください。

1
MySQLの友達関係
私はMySQLで友情関係を築いています。友好関係は相互関係です。AがBの友達である場合、BはAの友達です。ユーザーの1人が友情を終了した場合、関係は低下します。どっちがいいのか知りたい。 実行中のシステムがあります。 user ----------- userid p.k name friends ------- userid friendid primary key (`userid`,`friendid`), key `friendid` (`friendid`) 1 2 2 5 1 3 To get all of my friends; SELECT u.name, f.friendid , IF(f.userid = $userid, f.friendid, f.userid) friendid FROM friends f inner join user u ON ( u.userid = …

1
空間インデックスを複数列インデックスの一部にすることはできますか?
ここにあるこのマニュアルは非常に不明確であり、いくつかのサンプルSQLステートメントも提供していません。http: //dev.mysql.com/doc/refman/5.6/en/column-indexes.html 質問を言い換える別の方法は次のとおりです。 複数の列を持つインデックスを作成できることはわかっています。それらの列のインデックスが異なるタイプである場合はどうですか?最初の列が空間的で、もう1つが全文検索などであるとします。mysqlでそうすることはできますか?(ボーナス:あなたがたまたま知っていれば、mongodbでそれを行うことができますか?) myisamテーブルがあるとしましょう ポイントを含むLATLONG列があります 「ビジネス」の単語を含むFULLTEXT列があります 最初にLATLONGでクエリを実行し、次に一致するLATLONG内でFULLTEXT列に基づいてフィルター処理する必要があります。 複数の列のインデックスが必要になると思います。 しかし、SQLコマンドとは何でしょうか。 私たちが知っているように、mysqlは可能な場合は常に最初にフルテキスト検索インデックスを使用します。 このクエリ: SELECT BusinessID as ID , 111151.29341326*SQRT(pow(-6.186751-X(LatLong),2)+pow(106.772835-Y(LatLong),2)*0.98838574205337) AS Distance from tableauxiliary use index (LatLong_2) WHERE MBRContains( GeomFromText ( 'MULTIPOINT(-6.1934985598076 106.76604791159,-6.1800034401924 106.77962208841)' ), Latlong)=1 AND Prominent >15 AND MATCH FullTextSearch AGAINST ('sea*' IN BOOLEAN MODE) ORDER BY Distance LIMIT 0, …
8 mysql  index 


3
適切な多言語スキーマ、またはやりすぎですか?
UPDATE 2:私は実際にこれを使用してしまいましたが、2、3の調整後は素晴らしいです。実際のデザインと実際の動作に関する私の投稿は次のとおりです。http://tim.hithlonde.com/2013/lemon-schema-works/ 私はWebアプリを作成していますが、複数の言語をサポートしたいと考えています。この構造には2つのコンポーネントがあります。 ロケール( 'english'、 'Deutch'など)と用語を関連付け、ロゼッタストーンの接続用語と特定の言語の用語を使用します。 ページごとに用語をグループ化します。私は言いたくない、私がページで必要とするかもしれない30以上の用語を通して、term1、term2などを選択します。彼らが接続しているページで尋ねたいのですが。 これが私の提案するテーブル構造です(すべてのIDには非常に効率的なクエリを作成するために、ID間に関係/インデックスがあることに注意してください)。 * locale * id * value //English, Deutch, etc// * terms * id * value //In English// * page * id * value //Think add entry, menu// * page_group //group all terms to a page, for easy pulling// * id * page.id …

1
InnoDB-ibdata1ファイルとib_logfile0でのディスク書き込みI / Oが高い
サーバー仕様:次の情報を持つVPS model name : Intel(R) Xeon(R) CPU E5649 @ 2.53GHz MemTotal: 2058776 kB MemFree: 244436 kB Invision Power ServicesのIP.Boardを実行しinnodb_file_per_tableています。データベースを使用 してリロードし、ibdata1のサイズを小さくしています。ただし、ibdata1サイズが小さくなったにもかかわらず、最近でもCPUとI / Oの使用率が高いという問題がありました。 私の検査から、それはのI / O使用率が高いことが原因であると思いますibdata1。以下は、pt-ioprofile -cell sizes(Percona ToolKitで)を使用して取得したデータです。基本的に、30秒間に収集された合計I / O量です。 # pt-ioprofile -cell sizes Fri Jul 20 10:22:23 ICT 2012 Tracing process ID 8581 total pread read pwrite fsync open …
8 mysql  innodb 

1
ストアドプロシージャに対するMySQLユーザー権限
簡単なストアドプロシージャを作成しました。 mysql> CREATE FUNCTION hello (s CHAR(20)) -> RETURNS CHAR(50) DETERMINISTIC -> RETURN CONCAT('Hello, ',s,'!'); Query OK, 0 rows affected, 1 warning (0.00 sec) しかし、実行に失敗しました: mysql> SELECT hello('world'); ERROR 1370 (42000): execute command denied to user ''@'localhost' for routine 'test.hello' ユーザー名が空の文字列である可能性はありますか?ユーザーを作成して権限を付与するにはどうすればよいですか?データベース内のすべてのエンティティに対するすべての権限をユーザーに付与できますか?

2
mysqldumpとUSEを使用したMySQLデータベースのインポートが遅いSOURCE
MySQL innoDBには約12のテーブルがあり、そのうちの1つに1100万のレコードがあります。 私はこのコマンドを使用して物事をバックアップしました: mysqldump -u [USERNAME] -p [DBNAME] | gzip > [/path_to_file/DBNAME].sql.gz そして、次のコマンドで新しいサーバーにインポートします。 USE [DBNAME]; SOURCE [/path_to_file/DBNAME].sql; ここに私が苦しんでいる痛みがあります(時間は各クエリで上がっています!): スピードアップするにはどうすればよいですか?mysqldumpコマンドに何か問題がありますか?

3
このmysqlユーザーがパスワードでログインできないのはなぜですか?
phpmyadminで、パスワードとすべての権限を持つ「edward」というユーザーを作成しました。 しかし、phpmyadmin経由でログインしようとすると、「MySQLサーバーにログインできません」と表示されます。 コマンドライン(Windows 7)でログインしようとすると、次のいずれも許可されません。 しかし、パスワードなしでログインすると、次のようになります。 テーブルを2つだけ表示します。 パスワードが正しいことは確かです。複数のユーザーを作成しましたが、いくつ権限を与えても、すべてのユーザーはパスワードでログインできません。 このユーザーがパスワードのみでログインしてすべてのデータベースを表示できるようにするにはどうすればよいですか? 補遺: phpmyadminからのスクリーンショットは、「edward」が「root」と同じだけの権利を持っていることを示しています。

1
IOPS(1秒あたりのI / O)と、それがDB CRUD操作にどのように影響するかについて知りたい
InnoDBエンジンを実行するデータベース(MySQL)の専用サーバーを取得したい。InnoDBの容量には、IOPSを定義できるこのオプションがあります。100 IOPSに対応するSATA 72K-RPM HDDがあるとします。それは私のDBが1秒あたり100の同時SQLクエリしか実行できないということですか、それとも1秒で100回の単一の読み取りまたは書き込みを意味するのですか?このようなハードウェアでDBが起動される毎秒3000クエリをどのように処理できますか?少し混乱しているので説明してください。専用サーバーで200以上のクエリを実行したい。

2
1つのテーブルに2つの自動インクリメンタル列を設定するにはどうすればよいですか?
会社の請求書に関する情報を含むMySQLテーブルがあります。ただし、この会社には2つの支店があり、それぞれに固有の請求シーケンスがあります。いわば「セリエA」と「セリエB」。ただし、これは1つの会社であり、2つの請求書テーブルを作成したくありません。むしろ、1つのテーブルに2つの異なる自動インクリメントを設定したいのです。これは技術的に不可能であることはわかっていますが、これは他の人が以前に取り組んだ問題だと思うので、この問題の既知の「解決策」があるかどうか知りたいですか? 私が今行っているのは、請求書番号としてプライマリキーを使用すること(これは理想的です)ではなく、手動でインクリメントされる請求書IDを持つセカンダリ列を使用することです(まあ、PHPスクリプトを使用しますが、それでも自動ではありません) )、その特定のシリーズの最新の請求書を確認する。 これは私の現在の設定です: CREATE TABLE `invoices` ( `id` mediumint unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY, `invoicenumber` mediumint unsigned NOT NULL, `branch` enum('A','B') NOT NULL, `date` date NOT NULL, `client` varchar(100) NOT NULL ) COMMENT='' ENGINE='InnoDB'; 最新の請求書を確認するには、次のコマンドを実行します。 SELECT MAX(invoicenumber+1) AS new_invoice_number FROM invoices WHERE branch = 'A'

3
ユーザー定義の集計関数を作成するにはどうすればよいですか?
MySQLが提供していない集約関数が必要です。 MySQLのSQLフレーバー(つまり、Cではない)にしたいのですが。 どうすればよいですか?私が行き詰まっているのは、集約関数を作成することです- ドキュメントは、これがどのように行われるかについて言及していないようです。 product関数の望ましい使用法の例: mysql> select product(col) as a from `table`; +------+ | a | +------+ | 144 | +------+ 1 row in set (0.00 sec) mysql> select col, product(col) as a from `table` group by col; +-----+------+ | col | a | +-----+------+ | 6 | 36 | …

2
毎週の最終日を取得するSQLクエリ
MySQLを使用して、日時フィールドを持つテーブルをクエリする必要があります。特定の週のすべてのレコードをカウントする必要があります。date_format(colname、 "%Y%V")を使用すると、週番号が返されますが、その週の最終日(月の日01-28 | 29 | 30 | 31)が必要です。 出力例 COUNT(*)| 日付 11 | 2012-01-07 22 | 2012-01-14 123 | 2012-01-21 助けて? 注:私の場合、週の最終日は日曜日です。
8 mysql 

4
ルートとして権限を付与することはできません
問題があったため、を除くすべてのユーザーを再作成することにしましたroot@localhost。これは正常に機能しますが、新しく作成されたユーザーは何もする権利がありません。私が欲しいのは、単にローカルIPでrootにすべての権利を与えることです。私は(としてroot@localhost)試しました CREATE USER 'root'@'10.0.3.210'; GRANT ALL ON *.* TO 'root'@'10.0.3.210'; 最初のコマンドは機能し、2番目のコマンドはメッセージで失敗します ERROR 1045 (28000): Access denied for user 'root'@'localhost' なぜroot@localhostすべてを実行できないのかわかりません。その権限を変更していなかったと思います。から SHOW GRANTS FOR 'root'@'localhost' 私は得る Grants for root@localhost GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, SHUTDOWN, PROCESS, FILE, REFERENCES, INDEX, ALTER, SHOW DATABASES, SUPER, CREATE TEMPORARY TABLES, REPLICATION SLAVE, …

4
MySQLサブクエリが大幅にスローダウンしますが、独立して正常に動作します
クエリ1: select distinct email from mybigtable where account_id=345 0.1秒かかります クエリ2: Select count(*) as total from mybigtable where account_id=123 and email IN (<include all from above result>) 0.2秒かかります クエリ3: Select count(*) as total from mybigtable where account_id=123 and email IN (select distinct email from mybigtable where account_id=345) 22分かかり、90%が「準備中」の状態です。なぜこんなに時間がかかるのですか? テーブルはMySQL 5.0で3.2mil行のinnodbです

1
MySQLはテーブルごとに読み取り/書き込み
DBを最適化しています。本質的に私は私たちのデータベースで最も多く書かれ最も多く読まれたテーブルを見つけようとしています。その後、それらのテーブルを個別のドライブにシンボリックリンクします。 各テーブルのアクティビティを追跡する方法はありますか?以下のように、IOPS、テーブルごとの書き込み、読み取り?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.