nilnandan@desktop:~/sandboxes/msb_5_5_40$ mysql -uroot -p --socket=/tmp/mysql_sandbox5540.sock
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
nilnandan@desktop:~/sandboxes/msb_5_5_40$ mysql -uroot -p --socket=/tmp/mysql_sandbox5540.sock
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.40-36.1-log Percona Server (GPL), Release 36.1, Revision 707
Copyright (c) 2009-2014 Percona LLC and/or its affiliates
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
mysql> source /home/nilnandan/Downloads/goods_comments.sql
..
mysql> show create table goods_comments \G
*************************** 1. row ***************************
Table: goods_comments
Create Table: CREATE TABLE `goods_comments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`text` text NOT NULL COMMENT 'Текст',
`created` datetime NOT NULL COMMENT 'Дата создания',
`ip` int(11) unsigned NOT NULL COMMENT 'ip',
`status` tinyint(3) unsigned NOT NULL COMMENT 'Статус',
`record_id` mediumint(8) unsigned NOT NULL,
`name` varchar(64) NOT NULL COMMENT 'Имя',
`email` varchar(64) NOT NULL COMMENT 'Электронная почта',
`user_id` mediumint(8) unsigned NOT NULL,
`mark` tinyint(3) unsigned DEFAULT NULL COMMENT 'Оценка товара',
`rating` smallint(5) NOT NULL COMMENT 'Рейтинг коментария',
`count_voices` smallint(5) unsigned NOT NULL COMMENT 'Общее количество голосов коментария',
`summary` varchar(255) NOT NULL COMMENT 'Краткое содержание',
`dignity` text NOT NULL COMMENT 'Плюсы',
`shortcomings` text NOT NULL COMMENT 'Минусы',
`parent_comment_id` int(11) unsigned NOT NULL,
`subscribed_on_replies` tinyint(3) unsigned NOT NULL COMMENT 'Подписан на ответы',
`positive_vote_count` mediumint(8) unsigned NOT NULL COMMENT 'Количество положительных отзывов',
`negative_vote_count` mediumint(8) unsigned NOT NULL COMMENT 'Количество отрицательных отзывов',
`percent_dignity` tinyint(3) unsigned NOT NULL COMMENT 'Полезность комментария',
`points` smallint(5) NOT NULL COMMENT 'Количество положительных баллов',
`service_info` varchar(1024) NOT NULL COMMENT 'Cлужебная информация',
`date_approved` datetime NOT NULL COMMENT 'Дата одобрения',
`from_buyer` tinyint(3) unsigned NOT NULL COMMENT 'От купившего',
`allow_html` tinyint(3) unsigned NOT NULL COMMENT 'Позволять html-теги',
`favorite_for_author` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Избранный для автора',
`is_answers_readed` tinyint(3) unsigned DEFAULT '0' COMMENT 'Ответы, добавленные после этого коммента прочитанны',
`last_readed_answer_date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Дата последнего прочитанного комментария',
PRIMARY KEY (`record_id`,`id`),
KEY `id_index` (`id`),
KEY `mark_index` (`mark`),
KEY `parent_comment_id_index` (`parent_comment_id`),
KEY `status_index` (`status`),
KEY `user_id_index` (`user_id`),
KEY `record_id_index` (`record_id`),
KEY `favorite_for_author_index` (`favorite_for_author`),
KEY `user_id_status_index` (`user_id`,`status`)
) ENGINE=InnoDB AUTO_INCREMENT=7519748 DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED
/*!50100 PARTITION BY HASH (record_id)
PARTITIONS 10 */
1 row in set (0.01 sec)
mysql>
mysql> select count(*) from goods_comments;
+----------+
| count(*) |
+----------+
| 2686398 |
+----------+
1 row in set (1.00 sec)
mysql> SELECT id, user_id FROM goods_comments WHERE user_id=197827 AND id=5273769;
Empty set (0.01 sec)
mysql> explain SELECT id, user_id FROM goods_comments WHERE user_id=197827 AND id=5273769;
+----+-------------+----------------+-------------+---------------------------------------------+------------------------+---------+------+------+-------------------------------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+-------------+---------------------------------------------+------------------------+---------+------+------+-------------------------------------------------------------------+
| 1 | SIMPLE | goods_comments | index_merge | id_index,user_id_index,user_id_status_index | id_index,user_id_index | 4,3 | NULL | 1 | Using intersect(id_index,user_id_index); Using where; Using index |
+----+-------------+----------------+-------------+---------------------------------------------+------------------------+---------+------+------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> SELECT id, user_id FROM goods_comments IGNORE INDEX (user_id_ind) WHERE user_id=197827 AND id=5273769;
+---------+---------+
| id | user_id |
+---------+---------+
| 5273769 | 197827 |
+---------+---------+
1 row in set (0.01 sec)
mysql> explain SELECT id, user_id FROM goods_comments IGNORE INDEX (user_id_ind) WHERE user_id=197827 AND id=5273769;
+----+-------------+----------------+------+-------------------------------+----------+---------+-------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+----------------+------+-------------------------------+----------+---------+-------+------+-------------+
| 1 | SIMPLE | goods_comments | ref | id_index,user_id_status_index | id_index | 4 | const | 9 | Using where |
+----+-------------+----------------+------+-------------------------------+----------+---------+-------+------+-------------+
1 row in set (0.00 sec)
Verified on PS 5.5.40 with given table data.
nilnandan@ desktop: ~/sandboxes/ msb_5_5_ 40$ mysql -uroot -p --socket= /tmp/mysql_ sandbox5540. sock desktop: ~/sandboxes/ msb_5_5_ 40$ mysql -uroot -p --socket= /tmp/mysql_ sandbox5540. sock
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
nilnandan@
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.5.40-36.1-log Percona Server (GPL), Release 36.1, Revision 707
Copyright (c) 2009-2014 Percona LLC and/or its affiliates
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> /Downloads/ goods_comments. sql ******* ******* ****** 1. row ******* ******* ******* ****** comment_ id` int(11) unsigned NOT NULL, on_replies` tinyint(3) unsigned NOT NULL COMMENT 'Подписан на ответы', vote_count` mediumint(8) unsigned NOT NULL COMMENT 'Количество положительных отзывов', vote_count` mediumint(8) unsigned NOT NULL COMMENT 'Количество отрицательных отзывов', for_author` tinyint(3) unsigned NOT NULL DEFAULT '0' COMMENT 'Избранный для автора', readed` tinyint(3) unsigned DEFAULT '0' COMMENT 'Ответы, добавленные после этого коммента прочитанны', readed_ answer_ date` datetime NOT NULL DEFAULT '0000-00-00 00:00:00' COMMENT 'Дата последнего прочитанного комментария', comment_ id_index` (`parent_ comment_ id`), for_author_ index` (`favorite_ for_author` ), status_ index` (`user_ id`,`status` ) 7519748 DEFAULT CHARSET=utf8 ROW_FORMAT= COMPRESSED
mysql> source /home/nilnandan
..
mysql> show create table goods_comments \G
*******
Table: goods_comments
Create Table: CREATE TABLE `goods_comments` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`text` text NOT NULL COMMENT 'Текст',
`created` datetime NOT NULL COMMENT 'Дата создания',
`ip` int(11) unsigned NOT NULL COMMENT 'ip',
`status` tinyint(3) unsigned NOT NULL COMMENT 'Статус',
`record_id` mediumint(8) unsigned NOT NULL,
`name` varchar(64) NOT NULL COMMENT 'Имя',
`email` varchar(64) NOT NULL COMMENT 'Электронная почта',
`user_id` mediumint(8) unsigned NOT NULL,
`mark` tinyint(3) unsigned DEFAULT NULL COMMENT 'Оценка товара',
`rating` smallint(5) NOT NULL COMMENT 'Рейтинг коментария',
`count_voices` smallint(5) unsigned NOT NULL COMMENT 'Общее количество голосов коментария',
`summary` varchar(255) NOT NULL COMMENT 'Краткое содержание',
`dignity` text NOT NULL COMMENT 'Плюсы',
`shortcomings` text NOT NULL COMMENT 'Минусы',
`parent_
`subscribed_
`positive_
`negative_
`percent_dignity` tinyint(3) unsigned NOT NULL COMMENT 'Полезность комментария',
`points` smallint(5) NOT NULL COMMENT 'Количество положительных баллов',
`service_info` varchar(1024) NOT NULL COMMENT 'Cлужебная информация',
`date_approved` datetime NOT NULL COMMENT 'Дата одобрения',
`from_buyer` tinyint(3) unsigned NOT NULL COMMENT 'От купившего',
`allow_html` tinyint(3) unsigned NOT NULL COMMENT 'Позволять html-теги',
`favorite_
`is_answers_
`last_
PRIMARY KEY (`record_id`,`id`),
KEY `id_index` (`id`),
KEY `mark_index` (`mark`),
KEY `parent_
KEY `status_index` (`status`),
KEY `user_id_index` (`user_id`),
KEY `record_id_index` (`record_id`),
KEY `favorite_
KEY `user_id_
) ENGINE=InnoDB AUTO_INCREMENT=
/*!50100 PARTITION BY HASH (record_id)
PARTITIONS 10 */
1 row in set (0.01 sec)
mysql>
mysql> select count(*) from goods_comments;
+----------+
| count(*) |
+----------+
| 2686398 |
+----------+
1 row in set (1.00 sec)
mysql> SELECT id, user_id FROM goods_comments WHERE user_id=197827 AND id=5273769;
Empty set (0.01 sec)
mysql> explain SELECT id, user_id FROM goods_comments WHERE user_id=197827 AND id=5273769; ------- -----+- ------- ------- -+----- ------- -+----- ------- ------- ------- ------- ------- -----+- ------- ------- ------- --+---- -----+- -----+- -----+- ------- ------- ------- ------- ------- ------- ------- ------- ------- ---+ ------- -----+- ------- ------- -+----- ------- -+----- ------- ------- ------- ------- ------- -----+- ------- ------- ------- --+---- -----+- -----+- -----+- ------- ------- ------- ------- ------- ------- ------- ------- ------- ---+ user_id_ index,user_ id_status_ index | id_index, user_id_ index | 4,3 | NULL | 1 | Using intersect( id_index, user_id_ index); Using where; Using index | ------- -----+- ------- ------- -+----- ------- -+----- ------- ------- ------- ------- ------- -----+- ------- ------- ------- --+---- -----+- -----+- -----+- ------- ------- ------- ------- ------- ------- ------- ------- ------- ---+
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | goods_comments | index_merge | id_index,
+----+-
1 row in set (0.00 sec)
mysql> SELECT id, user_id FROM goods_comments IGNORE INDEX (user_id_ind) WHERE user_id=197827 AND id=5273769; ---+--- ------+ ---+--- ------+ ---+--- ------+
+------
| id | user_id |
+------
| 5273769 | 197827 |
+------
1 row in set (0.01 sec)
mysql> explain SELECT id, user_id FROM goods_comments IGNORE INDEX (user_id_ind) WHERE user_id=197827 AND id=5273769; ------- -----+- ------- ------- -+----- -+----- ------- ------- ------- -----+- ------- --+---- -----+- ------+ ------+ ------- ------+ ------- -----+- ------- ------- -+----- -+----- ------- ------- ------- -----+- ------- --+---- -----+- ------+ ------+ ------- ------+ user_id_ status_ index | id_index | 4 | const | 9 | Using where | ------- -----+- ------- ------- -+----- -+----- ------- ------- ------- -----+- ------- --+---- -----+- ------+ ------+ ------- ------+
+----+-
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-
| 1 | SIMPLE | goods_comments | ref | id_index,
+----+-
1 row in set (0.00 sec)