GROM

242 阅读1分钟
package main

import (
	"fmt"
	"gorm.io/driver/mysql"
	"gorm.io/gorm"
	"log"
)

type User struct{
	gorm.Model
	ID int `gorm:"primaryKey;autoIncrement"`
	Name string	`gorm:"type:varchar(255)"`
	PName string `gorm:"type:varchar(255)"`
	CHName string `gorm:"type:varchar(255)"`
	HostName string `gorm:"type:varchar(255)"`
	TName string `gorm:"type:varchar(255)"`
}

func main() {
	dsn := "root:111111@tcp(127.0.0.1:3306)/mydb?charset=utf8mb4&parseTime=True&loc=Local"
	db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
	if err != nil {
		log.Fatal(err)
	}
	
	// 非常慢
	//var users []User
	//db.Offset(8000000).Limit(10).Find(&users)
	//fmt.Println(users)


	// 优化方案
	// gorm优化offset查询速度
	var users2 []User
	db.Table("users as a").Joins("inner join (select id from users limit 100 offset 8000000) b on a.id=b.id;").Scan(&users2)
	fmt.Println(users2)
}