wxf666 最近的时间轴更新
wxf666

wxf666

V2EX 第 280897 号会员,加入于 2018-01-08 18:22:24 +08:00
今日活跃度排名 10198
wxf666 最近回复了
8 天前
回复了 dafuyang 创建的主题 MySQL 兄弟们,关于 sql 优化的问题想请教一下
@xiangyuecn `select a,b,c,d from table order by d desc limit 0,100;` 不是先走索引 d 查出主键,再查出对应的 a, b, c, d 吗?

实在不行,使用 `FORCE INDEX`,或者 `SELECT a, b, c, d FROM (SELECT id FROM table ORDER BY d DESC LIMIT 0, 100) t JOIN table USING(id)` ,感觉性能可以更好啊?(至少能减少数据传输?)
8 天前
回复了 dafuyang 创建的主题 MySQL 兄弟们,关于 sql 优化的问题想请教一下
@xiangyuecn 这个不就是楼主所说的『强制使用 d 索引』嘛。。

另外,为嘛要分开写呢?直接 `select a,b,c,d from table order by d desc limit 0,100;` 不行吗?
10 天前
回复了 andyJado 创建的主题 程序员 为什么我们不用 git 当数据库呢?
@andyJado

以及,怎么确保『用户消费货币 和 用户发帖 /回复』同时发生或不发生?(防止突然断电、程序突然崩溃等)

这些都是最最最基础的数据库功能,连 1MB 的 SQLite 都能轻易实现


可能数据量太大(而且没有数据),你不好练习

可以去搜索一下『 SQL 经典 50 题』,一些基于『十来行学生、课程、教师、成绩数据』的各种查询,看看怎么用 Git 实现?
10 天前
回复了 andyJado 创建的主题 程序员 为什么我们不用 git 当数据库呢?
@andyJado

1. 怎么存储 用户 的 提醒通知(及其是否已读)、历史消费、收藏节点 /主题、关注 /block 的用户?
2. 怎么知道 帖子 有哪些 回复?(回复所属的帖子)
3. 怎么知道 某个回复 有哪些“感谢回复者”记录?
4. 怎么搜索 某个用户 所有帖子、回复?
10 天前
回复了 andyJado 创建的主题 程序员 为什么我们不用 git 当数据库呢?
@andyJado 比如 V 站的 1K 个节点、60W 个用户、90W 个帖子、1200W 个回复,

以及每个用户的个人信息、所有提醒通知、虚拟货币消费历史,

还有每个帖子中某些用户的“感谢回复者”记录等,

怎么在 Git 里存储呢?


增删查改 节点、用户及个人信息、帖子、回复、提醒、消费 等,大概咋实现呢?
为啥 C/C++/Rust 效率能差于其他语言呢
15 天前
回复了 qiyong 创建的主题 程序员 面试中遇到的一道 sql 题
@potatowish wangxin3 `goods_sales_record` 表应该允许多次售出某个商品吧

因为楼主 @qiyong 也用了 `FROM goods_sales_record GROUP BY goods_id`


我试了下,`goods_sales_record` 表加个 `(7, 1, '100')`,#12 #14 结果就不对了


试着拿 `SQLite` 写了下:

*( V 站排版原因,行首有全角空格,记得删除)*

```sql
WITH
  goods(id, name, group_id) AS (
   VALUES
   (1, '苹果手机', 1),
   (2, '三星手机', 1),
   (3, '联想电脑', 2),
   (4, '华为手机', 1),
   (5, '华硕电脑', 2),
   (6, 'IKBC', 3)
 ),

  goods_group(id, name) AS (
   VALUES
   (1, '手机'),
   (2, '电脑'),
   (3, '键盘')
 ),

  goods_sales_record(id, goods_id, sales_volume) AS (
   VALUES
   (1, 1, '50'),
   (2, 2, '30'),
   (3, 3, '88'),
   (4, 4, '88'),
   (5, 5, '444'),
   (6, 6, '34')
 ),

  goods_sales(goods_id, total_sales) AS (
   SELECT goods_id, SUM(sales_volume)
   FROM goods_sales_record
   GROUP BY 1
 ),

  top3 AS (
   SELECT *
   FROM goods_sales
   ORDER BY total_sales DESC
   LIMIT 3
 )

SELECT
  g1.name 商品名,
  gg.name 商品所属分组名,
  t3.total_sales 商品销量,
  SUM(gs.total_sales) 分组内所有商品总销量
FROM top3 t3
JOIN goods g1 ON g1.id = t3.goods_id
JOIN goods g2 USING(group_id)
JOIN goods_group gg ON gg.id = g1.group_id
JOIN goods_sales gs ON g2.id = gs.goods_id
GROUP BY g1.id
ORDER BY 分组内所有商品总销量 DESC, 商品销量 DESC;
```
@maggch97 确实,改成 round(1.15 * 100) 就能继续跑了

但跑了快半个钟了,还没出结果。。
@dqzcwxb 请教一下,为嘛不选用窗口函数呢?(差在哪儿?)
17 天前
回复了 brader 创建的主题 程序员 请教个 sql 查询问题
@brader 能大致放一下当前的表结构 和 查询 SQL 吗?
关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1976 人在线   最高记录 5497   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 26ms · UTC 16:47 · PVG 00:47 · LAX 08:47 · JFK 11:47
Developed with CodeLauncher
♥ Do have faith in what you're doing.