MySQL(三) —— MySQL性能优化之 索引优化

版权声明:ClearBoy 版权 https://blog.csdn.net/qq_41677196/article/details/83547580

MySQL索引优化

如何选择合适的列建立索引?

在where从句、group by 从句、order by 从句、on 从句中出现的列

索引字段越小越好

离散度大的列放在联合索引的前面

如何判断列的离散度?

去重查询看列的唯一值,唯一值越多则离散度越大。

mysql> desc account.user_info;
+---------------+--------------+------+-----+---------+----------------+
| Field         | Type         | Null | Key | Default | Extra          |
+---------------+--------------+------+-----+---------+----------------+
| id            | int(11)      | NO   | PRI | NULL    | auto_increment |
| account       | varchar(128) | YES  | MUL | NULL    |                |
| serverid      | int(11)      | YES  | MUL | 0       |                |
| channel       | varchar(128) | YES  | MUL | NULL    |                |
| sub_channel   | varchar(128) | YES  |     | NULL    |                |
| plat          | varchar(128) | YES  |     | NULL    |                |
| udid          | varchar(128) | YES  |     | NULL    |                |
| ip            | varchar(512) | YES  |     | NULL    |                |
| logdate       | datetime     | YES  |     | NULL    |                |
| createdate    | datetime     | YES  |     | NULL    |                |
| vip_lv        | int(11)      | YES  |     | 0       |                |
| recharge      | int(11)      | YES  |     | 0       |                |
| last_serverId | int(11)      | YES  | MUL | 0       |                |
+---------------+--------------+------+-----+---------+----------------+
13 rows in set (0.00 sec)

SELECT COUNT(DISTINCT serverid),count(distinct channel) FROM account.user_info;

mysql> SELECT COUNT(DISTINCT serverid),count(distinct channel) FROM account.user_info;
+--------------------------+-------------------------+
| COUNT(DISTINCT serverid) | count(distinct channel) |
+--------------------------+-------------------------+
|                       17 |                      19 |
+--------------------------+-------------------------+
1 row in set (0.00 sec)
mysql>  SELECT COUNT(1) FROM account.user_info WHERE channel='mmo_no_ajzz' AND serverid=1;
+----------+
| COUNT(1) |
+----------+
|       39 |
+----------+
1 row in set (0.00 sec)

猜你喜欢

转载自blog.csdn.net/qq_41677196/article/details/83547580