-
请问有什么方法可以提升使用 sql 语句查询笔记的效率嘛
2025-03-28 01:48这是查询单个标签笔记的 sql
WITH RECURSIVE TargetBook AS ( -- 这里定义目标书籍名称 SELECT '《我们纯真的青春》' AS book_name ), TargetExclusion AS ( -- 这里定义需要排除的内容 SELECT '%((%00-功能测试文档%))%' AS exclusion_pattern ), FilteredBlocks AS ( -- 只保留 hpath 符合条件的内容块 SELECT * FROM blocks WHERE hpath LIKE '%/DailyNote-时间索引/%' AND content NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除内容块中的不相关内容 ), BookChapters AS ( -- 选取目录超级块(确保是指定书籍的目录) SELECT b.id, b.content, b.markdown FROM FilteredBlocks AS b JOIN TargetBook tb ON b.fcontent LIKE tb.book_name || '-%' WHERE b.type = 's' AND b.markdown NOT LIKE '{{{col%' AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除不相关内容块 UNION ALL -- 递归查找属于该书籍目录的 **所有章节块(标题 h)** SELECT b2.id, b2.content, b2.markdown FROM FilteredBlocks AS b2 JOIN BookChapters AS bc ON b2.parent_id = bc.id WHERE b2.type = 'h' -- 只递归查找标题块 AND b2.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除不相关内容块 ), RelatedNotes AS ( -- 直接包含对该书籍的反链引用的内容块 SELECT b.id, b.content, b.markdown, b.type, b.hpath FROM FilteredBlocks AS b JOIN TargetBook tb ON b.markdown LIKE '%((%' || tb.book_name || '%))%' AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除不相关内容块 UNION -- 通过 refs 表反链引用书籍章节的内容块 SELECT b.id, b.content, b.markdown, b.type, b.hpath FROM FilteredBlocks AS b JOIN refs AS r ON b.id = r.def_block_id WHERE r.def_block_id IN (SELECT id FROM BookChapters) AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除不相关内容块 ), -- 递归查找 `RelatedNotes` 的所有子块 RecursiveChildren AS ( SELECT b.* FROM FilteredBlocks b WHERE b.parent_id IN (SELECT id FROM RelatedNotes) UNION SELECT b.* FROM FilteredBlocks b JOIN RecursiveChildren rc ON b.parent_id = rc.id WHERE b.content NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) -- 排除子块中的不相关内容 ), ImportantPoints AS ( -- 筛选出 “#功能标签#” 的内容块 SELECT b.* FROM RecursiveChildren b WHERE b.tag LIKE '%精彩文案%#%' -- 确保包含 #功能标签# AND b.tag NOT LIKE '%#【专辑】%读书笔记#%' -- 确保不包含 #【专辑】%读书笔记# AND b.type = 'i' ) SELECT * FROM ImportantPoints ORDER BY CREATED;
-
请问有什么方法可以提升使用 sql 语句查询笔记的效率嘛
2025-03-28 01:47emmm,用 gpt 重新写了一个查询语句,性能高了很多很多,贴在这里记录一下吧
WITH RECURSIVE TargetBook AS ( -- 目标书籍 SELECT '《最好的我们》' AS book_name ), TargetExclusion AS ( -- 需要排除的内容 SELECT '%((%00-功能测试文档%))%' AS exclusion_pattern ), FilteredBlocks AS ( -- 只保留符合条件的内容块 SELECT * FROM blocks WHERE hpath LIKE '%/DailyNote-时间索引/%' AND content NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) ), BookChapters AS ( -- 选取目录超级块(确保是指定书籍的目录) SELECT b.id, b.content, b.markdown FROM FilteredBlocks AS b JOIN TargetBook tb ON b.fcontent LIKE tb.book_name || '-%' WHERE b.type = 's' AND b.markdown NOT LIKE '{{{col%' AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) UNION ALL -- 递归查找属于该书籍目录的所有章节块(标题 h) SELECT b2.id, b2.content, b2.markdown FROM FilteredBlocks AS b2 JOIN BookChapters AS bc ON b2.parent_id = bc.id WHERE b2.type = 'h' AND b2.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) ), RelatedNotes AS ( -- 直接包含对该书籍的反链引用的内容块 SELECT b.id, b.content, b.markdown, b.type, b.hpath FROM FilteredBlocks AS b JOIN TargetBook tb ON b.markdown LIKE '%((%' || tb.book_name || '%))%' AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) UNION -- 通过 refs 表反链引用书籍章节的内容块 SELECT b.id, b.content, b.markdown, b.type, b.hpath FROM FilteredBlocks AS b JOIN refs AS r ON b.id = r.def_block_id WHERE r.def_block_id IN (SELECT id FROM BookChapters) AND b.markdown NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) ), -- 递归查找 RelatedNotes 的所有子块 RecursiveChildren AS ( SELECT b.* FROM FilteredBlocks b WHERE b.parent_id IN (SELECT id FROM RelatedNotes) UNION SELECT b.* FROM FilteredBlocks b JOIN RecursiveChildren rc ON b.parent_id = rc.id WHERE b.content NOT LIKE (SELECT exclusion_pattern FROM TargetExclusion) ), TagList AS ( -- 统一管理所有要统计的标签 SELECT '内容有感' AS 笔记类型, '%内容有感%#%' AS tag_pattern UNION ALL SELECT '内容讨论', '%内容讨论%#%' UNION ALL SELECT '精彩文案', '%精彩文案%#%' UNION ALL SELECT '重要观点', '%重要观点%#%' ), DesiredTags AS ( -- 筛选出符合 TagList 里定义标签的内容块 SELECT b.*, t.笔记类型 FROM RecursiveChildren b JOIN TagList t ON b.tag LIKE t.tag_pattern WHERE b.tag NOT LIKE '%#【专辑】%读书笔记#%' AND b.type = 'i' ), TagCounts AS ( -- 统计每个标签的笔记数量 SELECT t.笔记类型, COUNT(b.id) AS 数量 FROM TagList t LEFT JOIN DesiredTags b ON t.笔记类型 = b.笔记类型 GROUP BY t.笔记类型 ) -- 最终统计结果,保证所有标签都显示,即使没有笔记 SELECT t.笔记类型, COALESCE(tc.数量, 0) AS 数量 FROM TagList t LEFT JOIN TagCounts tc ON t.笔记类型 = tc.笔记类型 ORDER BY t.笔记类型;
-
请问有什么方法可以提升使用 sql 语句查询笔记的效率嘛
2025-03-26 20:14我的使用场景是,想把把阅读书本时产生的笔记 按不同的功能标签 汇总起来,另外统计不同的功能标签的笔记数量。
所以设计了一个类似下面的结构:
- [[书本名字反链]],#读书笔记标签# ## 书本章节1 ### [[主题反链]] - #功能标签1# 笔记内容
因为 功能标签的父级块不是书本名字,所以就想到 多嵌套一层查询条件,通过匹配查找书本目录这个超级块里的章节名称(标题块)来找到对应的笔记内容 ,实现曲线救国
帖子里的语句 是 汇总统计了 在这个结构下 4 个不同功能标签 对应的笔记数量
-
思源新版本安卓端编辑菜单栏被挡住
2025-03-25 14:39型号:荣耀 100
系统:安卓 15对了,这个型号和系统下还有一个问题:
在使用全面屏手势的时候,切到多任务界面后再切回思源的界面,3.1.25 版本的思源会变成黑屏,没有刷新界面,需要在设置里手动强制结束运行后重启才能打开
-
思源安卓端伺服在手机熄屏休眠,或者切到后台一段时间总是会断掉链接,有什么好的解决办法吗?
2025-02-27 18:16是 google play 上下载吗,我试了 2 次都安装不上。连闪退的机会都没有
-
在文档使用自定义图标,不应该使用插入文档图标的逻辑,引用时不能显示
2025-02-06 22:11这两个都是不是文档块,被引用的是标题块,知乎和彩虹都应该是作为标题文本,但是现在的对自定义图标的处理逻辑似乎是当成了文档的图标
-
请问下为什么在文档下的块创建引用时不能搜索到文档本身的名字啊
2025-01-04 11:27enne~ 我之前也是这样子直接复制引用,后来突然想到,可不可以在模板里面新建一个引用的文档 A,但这个文档 A 之前并没有被创建,然后下次再次调用这个模板时可以直接引用到这个文档 A,就像 Obsidian 一样
-
请问下为什么在文档下的块创建引用时不能搜索到文档本身的名字啊
2025-01-01 15:12这样子,好吧
对了,麻烦 D 大 有空看看这个问题: 安卓端 3.1.17 版本在标题使用引用时反链面板显示失效
-
安卓端 3.1.17 版本在标题使用引用时反链面板显示失效
2024-12-29 09:29 -
安卓端 3.1.17 版本在标题使用引用时反链面板显示失效
2024-12-29 09:14我刚刚试了一下,发现如果只有引用内容的话,是识别不了的,但是如果这个标题块里除了引用的内容,还有其他的正常的文本(无论前后),那反链面板里就能识别 @88250
-
如何实现代码块内部的备注?
2024-07-24 12:02确实是,注释跟代码混在一块会显得比较乱,
不过这个也是现在编程的现状,如果想要学代码,以后想自己看其他人的工程的话,还是适应一下这种状态比较好