Skip to content

Commit cee555a

Browse files
authored
♻️ refactor: improve db sql performance (#9283)
* improve sql * improve db index * improve db index * improve db index
1 parent 28f84d5 commit cee555a

File tree

11 files changed

+6694
-36
lines changed

11 files changed

+6694
-36
lines changed

docs/development/database-schema.dbml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,9 @@ table messages {
419419
topic_id [name: 'messages_topic_id_idx']
420420
parent_id [name: 'messages_parent_id_idx']
421421
quota_id [name: 'messages_quota_id_idx']
422+
user_id [name: 'messages_user_id_idx']
423+
session_id [name: 'messages_session_id_idx']
424+
thread_id [name: 'messages_thread_id_idx']
422425
}
423426
}
424427

@@ -624,6 +627,7 @@ table chunks {
624627

625628
indexes {
626629
(client_id, user_id) [name: 'chunks_client_id_user_id_unique', unique]
630+
user_id [name: 'chunks_user_id_idx']
627631
}
628632
}
629633

@@ -637,6 +641,7 @@ table embeddings {
637641

638642
indexes {
639643
(client_id, user_id) [name: 'embeddings_client_id_user_id_unique', unique]
644+
chunk_id [name: 'embeddings_chunk_id_idx']
640645
}
641646
}
642647

@@ -836,6 +841,8 @@ table sessions {
836841
indexes {
837842
(slug, user_id) [name: 'slug_user_id_unique', unique]
838843
(client_id, user_id) [name: 'sessions_client_id_user_id_unique', unique]
844+
user_id [name: 'sessions_user_id_idx']
845+
(id, user_id) [name: 'sessions_id_user_id_idx']
839846
}
840847
}
841848

@@ -886,6 +893,8 @@ table topics {
886893

887894
indexes {
888895
(client_id, user_id) [name: 'topics_client_id_user_id_unique', unique]
896+
user_id [name: 'topics_user_id_idx']
897+
(id, user_id) [name: 'topics_id_user_id_idx']
889898
}
890899
}
891900

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1-
-- 将超过 1000 字符的 description 截断为 1000 字符
1+
-- Truncate title to 255 characters if it exceeds the limit
2+
UPDATE agents
3+
SET title = LEFT(title, 255)
4+
WHERE LENGTH(title) > 255;--> statement-breakpoint
5+
6+
-- Truncate description to 1000 characters if it exceeds the limit
27
UPDATE agents
38
SET description = LEFT(description, 1000)
49
WHERE LENGTH(description) > 1000;--> statement-breakpoint
10+
511
CREATE INDEX IF NOT EXISTS "agents_title_idx" ON "agents" USING btree ("title");--> statement-breakpoint
612
CREATE INDEX IF NOT EXISTS "agents_description_idx" ON "agents" USING btree ("description");
Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,2 @@
1-
-- 将超过 255 字符的 title 截断为 255 字符
2-
UPDATE agents
3-
SET title = LEFT(title, 255)
4-
WHERE LENGTH(title) > 255;--> statement-breakpoint
51
ALTER TABLE "agents" ALTER COLUMN "title" SET DATA TYPE varchar(255);--> statement-breakpoint
62
ALTER TABLE "agents" ALTER COLUMN "description" SET DATA TYPE varchar(1000);
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
-- 解决 chunks 表慢查询
2+
CREATE INDEX IF NOT EXISTS "chunks_user_id_idx" ON "chunks" USING btree ("user_id");--> statement-breakpoint
3+
4+
-- 解决 topics 表批量删除慢查询
5+
CREATE INDEX IF NOT EXISTS "topics_user_id_idx" ON "topics" USING btree ("user_id");--> statement-breakpoint
6+
CREATE INDEX IF NOT EXISTS "topics_id_user_id_idx" ON "topics" USING btree ("id","user_id");--> statement-breakpoint
7+
8+
-- 解决 sessions 表删除慢查询
9+
CREATE INDEX IF NOT EXISTS "sessions_user_id_idx" ON "sessions" USING btree ("user_id");--> statement-breakpoint
10+
CREATE INDEX IF NOT EXISTS "sessions_id_user_id_idx" ON "sessions" USING btree ("id","user_id");--> statement-breakpoint
11+
12+
-- 解决 messages 表统计查询慢查询
13+
CREATE INDEX IF NOT EXISTS "messages_user_id_idx" ON "messages" USING btree ("user_id");--> statement-breakpoint
14+
CREATE INDEX IF NOT EXISTS "messages_session_id_idx" ON "messages" USING btree ("session_id");--> statement-breakpoint
15+
CREATE INDEX IF NOT EXISTS "messages_thread_id_idx" ON "messages" USING btree ("thread_id");--> statement-breakpoint
16+
17+
-- 解决 embeddings 删除慢查询
18+
CREATE INDEX IF NOT EXISTS "embeddings_chunk_id_idx" ON "embeddings" USING btree ("chunk_id");--> statement-breakpoint

0 commit comments

Comments
 (0)