gpt4 book ai didi

MYSQL 从具有 100 万行的表中选择 distinct(indexed_column)

转载 作者:行者123 更新时间:2023-11-30 23:38:57 26 4
gpt4 key购买 nike

编辑:实际上除了select distinct(我还没有验证),主要的性能瓶颈可能是网络速度,当服务器和客户端都在本地主机上时,选择所有 200 万条记录花费了 36 秒,但是,在客户端坐在另一个盒子上的(据说是高速的)网络上,查询在 10 分钟后尚未完成。
这应该是 100mbps 的网络,但是当我检查客户端(java jdbc),它以 3kb/秒的速率接收数据。然而,mysql 服务器以 100kb/sec 的速度发送(尽管包括其他客户端连接)。为什么java jdbc客户端接收数据速度这么慢?

select distinct(indexed_column) from mytable

在只有 100 万行的 mytable 上非常慢,indexed_column 是一个非唯一索引。有没有办法优化它?一个解释给出了这个:

id | select_type | table        | type  | possible_keys | key               | key_len | ref  | rows    | Extra     |  1 | SIMPLE      | mytable | range | NULL          | my_index | 50      | NULL | 1759002 | Using index for group-by | 

type=range 是否意味着它没有使用索引?这就是它慢的原因吗?

最佳答案

我会在表上建立一个唯一索引,在你想要“DISTINCT”的列上......

因此您要在给定列上查找 DISTINCT。如果您在要查找不同组合的列(或列)上构建 UNIQUE INDEX,则索引页面将仅包含指向符合此类组合条件的第一条记录的指针。

例如:如果你有

Category   Count
1 587
2 321
3 172
4 229
5 837

您在类别上的 UNIQUE INDEX 将只有 5 条记录...在这种情况下,即使 5 个类别中有超过 2,000 个条目,DISTINCT CATEGORY 计数为 5,索引有 5,您已完成。将此概念应用到包含 100 万条以上记录的表中。

关于MYSQL 从具有 100 万行的表中选择 distinct(indexed_column),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5116493/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com