https://github.com/go-gorm/hints
Optimizer/Index/Comment Hints for GORM
https://github.com/go-gorm/hints
gorm hints
Last synced: 7 months ago
JSON representation
Optimizer/Index/Comment Hints for GORM
- Host: GitHub
- URL: https://github.com/go-gorm/hints
- Owner: go-gorm
- License: mit
- Created: 2020-06-11T00:36:03.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2024-09-14T12:54:46.000Z (over 1 year ago)
- Last Synced: 2024-12-07T18:11:53.034Z (about 1 year ago)
- Topics: gorm, hints
- Language: Go
- Homepage:
- Size: 68.4 KB
- Stars: 40
- Watchers: 4
- Forks: 10
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: License
Awesome Lists containing this project
README
# Hints

Optimizer/Index/Comment Hints support for GORM
## Optimizer Hints
```go
import "gorm.io/hints"
DB.Clauses(hints.New("hint")).Find(&User{})
// SELECT * /*+ hint */ FROM `users`
```
## Index Hints
```go
import "gorm.io/hints"
DB.Clauses(hints.UseIndex("idx_user_name")).Find(&User{})
// SELECT * FROM `users` USE INDEX (`idx_user_name`)
DB.Clauses(hints.ForceIndex("idx_user_name", "idx_user_id").ForJoin()).Find(&User{})
// SELECT * FROM `users` FORCE INDEX FOR JOIN (`idx_user_name`,`idx_user_id`)"
DB.Clauses(
hints.ForceIndex("idx_user_name", "idx_user_id").ForOrderBy(),
hints.IgnoreIndex("idx_user_name").ForGroupBy(),
).Find(&User{})
// SELECT * FROM `users` FORCE INDEX FOR ORDER BY (`idx_user_name`,`idx_user_id`) IGNORE INDEX FOR GROUP BY (`idx_user_name`)"
```
## Comment Hints
```go
import "gorm.io/hints"
DB.Clauses(hints.Comment("select", "master")).Find(&User{})
// SELECT /*master*/ * FROM `users`;
DB.Clauses(hints.CommentBefore("insert", "node2")).Create(&user)
// /*node2*/ INSERT INTO `users` ...;
DB.Clauses(hints.CommentAfter("select", "node2")).Create(&user)
// /*node2*/ INSERT INTO `users` ...;
DB.Clauses(hints.CommentAfter("where", "hint")).Find(&User{}, "id = ?", 1)
// SELECT * FROM `users` WHERE id = ? /* hint */
```