Lấy nhanh random rows trong mysql table

Discussion in 'Hỏi Đáp Kỹ Thuật' started by Trí Mén, Oct 3, 2017.

  1. money

    money Hương Chủ

    Làm gì đến TB, to nhất tầm 200Gb thôi. Phổ biến là từ vài Gb đến tầm 20Gb.
     
  2. Nai

    Nai MiddleMan Staff Member

    Em có 3 table như sau thì áp dụng theo cách của anh thì phải thiết kế table thế nào để tối ưu nhất anh?
    Hiện tại mỗi lần hiển thị em phải check xem nó có cùng chuyên mục hay không khá là cực.
    product (product_id,product_name)
    tag(tag_id,tag_name)
    relationship(tag_id,product_id,tag_type[category,tag])
     
  3. money

    money Hương Chủ

    Nên có 1 table category riêng. Nếu 1 product thuộc 1 cate thì thêm field cateid vào table product. Nếu 1 product thuộc nhiều cate thì thêm quan hệ product_cate hoặc thêm N field cateid1, cateid2, ... vào product. Anh thích cách thêm N field cateid hơn. Table product của anh có 5 field cateid.
    Dù dùng cách nào thì cũng ko lấy dc random row theo cate bằng cách lấy random rows ở trên.
     
    Vito_King and Nai like this.
  4. Nai

    Nai MiddleMan Staff Member

    Do dựa theo thằng wordpress để làm nên làm làm chung tag và cat cùng 1 table và dùng field tag_type để phân loại :D.
    Vậy cách của anh chỉ dùng tốt nhất khi random cho việc search thôi đúng ko anh :D
     
  5. money

    money Hương Chủ

    Cho random thuần tuý ko có tiêu chí nào cả. Chứ search theo keyword thì nhanh nhất vẫn là fulltext.
     
    Nai likes this.
  6. wpresources

    wpresources Bang Chúng

    Trường hợp ca lạ quá,em id tự tăng vẫn 1,2,3,4..có khi nào trong quá trình insert ca bị lỗi không ví dụ ca có trycacth mà xóa dòng hiển thị lỗi ấy nên không thấy.Nếu insert lỗi từ 2 thì insert cái sau là 3 chứ không phải 2 mặc dù trong database chả có cái id 2 nào