因為公眾平台開發需要對access_token和jsapi_ticket進行緩衝,所以建立了一個wx_token的表,表有三個欄位,兩行資料,如下:
| key| content | expire |
| access_token | xxxx | 111111111 |
| jsapi_ticket | xxxx | 111111111 |
只作為緩衝,所以每次查詢或者修改“content”和“expire”內的內容,“key”內的內容作為標示。
最開始我只是建立這兩個表,沒有設定主鍵和約束,但是這樣查詢和更新都會出現錯誤。
我的問題是:
1.必須要把key設定成主鍵嗎?
2.不設定主鍵就沒有辦法查詢和更新嗎?(或者說簡單的方法)如果有那麼該如何建表?
以上。
回複內容:
因為公眾平台開發需要對access_token和jsapi_ticket進行緩衝,所以建立了一個wx_token的表,表有三個欄位,兩行資料,如下:
| key| content | expire |
| access_token | xxxx | 111111111 |
| jsapi_ticket | xxxx | 111111111 |
只作為緩衝,所以每次查詢或者修改“content”和“expire”內的內容,“key”內的內容作為標示。
最開始我只是建立這兩個表,沒有設定主鍵和約束,但是這樣查詢和更新都會出現錯誤。
我的問題是:
1.必須要把key設定成主鍵嗎?
2.不設定主鍵就沒有辦法查詢和更新嗎?(或者說簡單的方法)如果有那麼該如何建表?
以上。
1、主鍵就相當於 唯一值+索引 的功能,你key欄位的記錄往下會有重複嗎?你建表的時候忘加或者後期需要主鍵,可以後期添加的,有索引的話,當你記錄數足夠多時效率大大提高。(也可以單獨創索引)
2、索引除了提高查詢速度外,也能提高UPDATE,DELETE,INSERT操作的速度,比如你這裡經常會使用:
select * from wx_token where key='access_token';
或者
update wx_token set content='值',expire='值' where key='access_token';
主要看記錄數量、哪種DML語句執行的頻繁來做決定。
AccessToken 和 Ticket 是有到期時間的,因此不建議使用資料庫作為緩衝層,可以考慮使用記憶體緩衝(Apc 或 memcached)等。
https://github.com/thenbsp/wechat/blob/master/documentation/accesstoken.md
https://github.com/thenbsp/wechat/blob/master/documentation/ticket.md