V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  RickyC  ›  全部回复第 22 页 / 共 34 页
回复总数  668
1 ... 18  19  20  21  22  23  24  25  26  27 ... 34  
2020-10-04 19:53:48 +08:00
回复了 darksheep9527 创建的主题 Kotlin 求推荐 kotlin 安卓开发教程
2020-10-03 18:49:26 +08:00
回复了 kidlj 创建的主题 Go 编程语言 要学 Go 的赶紧上车
我好像阅读障碍, 对于这么长的文章读不下去.
2020-10-01 11:40:12 +08:00
回复了 MiBAO 创建的主题 互联网 就没人觉得现在的 csdn 也是个毒瘤吗
CSDN, cnblogs, 阿里云, 腾讯云 全在污染百度的搜索;
无奈百度从来不听大众的声音, 从来一意孤行; 百度好像自己不用自己的产品.
2020-09-29 11:19:34 +08:00
回复了 CodeXx 创建的主题 数据库 MySQL 单表三千万条数据,怎么优化 count 查询?
接上
如果你每天还有 10w 的数据更改, 可以在每次更改的时候修改 count 表.

我觉得用 count 表可能解决你的问题. 预先统计
2020-09-29 11:17:10 +08:00
回复了 CodeXx 创建的主题 数据库 MySQL 单表三千万条数据,怎么优化 count 查询?
如果数据库不经常改变
根据查询条件建立几个 count 表, 里面保存根据各种条件得到的 count 数字;
并给 count 表建立索引

这样也许行
@Rekkles 我去, 厉害了 电脑啥配置
@ylsc633
@daxin945
@wangyzj
@encro
@encro
@fareware

千万数据命中索引就没有任何问题吗?
分页的情况, 速度还可以.

但是这是从全表取出符合条件的所有 ID,
每次得到的 ID 表数据量可能在 4-5 万;
也能做到 1 秒以内吗?
@hooopo
@shaoyijiong

我们只要求查询总数小于 10 万的 id 集合;
现在可以得到各种查询的总数

这也必须改成其他数据库或者上 es 吗?

es 可以在 PHP 用?
2020-09-27 12:53:06 +08:00
回复了 Mindjet 创建的主题 程序员 独立开发者到底是啥意思?
@wanacry 你们程序员心眼儿就是多, 这个论坛和别的论坛不一样. 我没想到那么多.
2020-09-27 08:46:10 +08:00
回复了 Mindjet 创建的主题 程序员 独立开发者到底是啥意思?
@laogui 厉害了, 这么多年, 又看到您了.
2020-09-23 17:31:18 +08:00
回复了 RickyC 创建的主题 MySQL 对于不同字段的 or 查询怎样建立所以查询速度快?
命令: SELECT count(*) FROM table WHERE `a`=21 OR `b`=4301;

+----+-------------+--------------------+------------+-------------+---------------------+----------------+---------+------+--------+----------+-----------------------------------------------+
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
+----+-------------+--------------------+------------+-------------+---------------------+----------------+---------+------+--------+----------+-----------------------------------------------+
| 1 | SIMPLE | table | NULL | index_merge | index_a,index_b,index_ab | index_ab,index_b | 5,5 | NULL | 639711 | 100.00 | Using sort_union(index_ab,index_b); Using where |
+----+-------------+--------------------+------------+-------------+---------------------+----------------+---------+------+--------+----------+-----------------------------------------------+

----------------分隔符------------------------

命令: SELECT count(*) FROM table WHERE `a`=21 OR `b`=4301;
+----------+
| count(*) |
+----------+
| 690113 |
+----------+

1 row in set (2 min 23.63 sec)

----------------分隔符------------------------

-------------------------
您是说 explain 的 rows 639711 就是总条数吗?
但是和 count 的 690113 数量不同

@taogen
2020-09-23 00:53:43 +08:00
回复了 RickyC 创建的主题 MySQL 对于不同字段的 or 查询怎样建立所以查询速度快?
@liprais explain 的 rows 并不是统计个数吧? 和 count(*)结果相差太大
2020-09-22 23:03:02 +08:00
回复了 RickyC 创建的主题 MySQL 对于不同字段的 or 查询怎样建立所以查询速度快?
群里一位大哥给了个答案

先查 count(*) where a=1, 得 x
再查 count(*) where b=2, 得 y
再查 count(*) where a=1 and b=2, 得 z

然后用 x+y-z 就得到 where a=1 or b=2 的个数

需要 3 个索引: 单独 a 的, 单独 b 的, a 和 b 的
世界从来不是有序的, 而是从无序中寻找有序, 人们将这称为"劳动".
@alexmao a.id, b.id 不香吗?
2020-09-22 21:18:56 +08:00
回复了 RickyC 创建的主题 MySQL 对于不同字段的 or 查询怎样建立所以查询速度快?
@cqxxxxxxx 组合索引也不好使
2020-09-22 21:18:09 +08:00
回复了 RickyC 创建的主题 MySQL 对于不同字段的 or 查询怎样建立所以查询速度快?
@cqxxxxxxx
目前看来 where a=1 or a=2 这样的走索引
而 where a=2 or b=2 这样的不走索引, 即使是 count(*)
1 ... 18  19  20  21  22  23  24  25  26  27 ... 34  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3105 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 289ms · UTC 04:18 · PVG 12:18 · LAX 21:18 · JFK 00:18
Developed with CodeLauncher
♥ Do have faith in what you're doing.