亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL“in clause”中的項目數

MySQL“in clause”中的項目數

Helenr 2019-09-02 16:15:59
我有三個表來定義用戶:USER: user_id (int), username (varchar)USER_METADATA_FIELD: user_metadata_field_id (int), field_name (varchar)USER_METADATA: user_metadata_field_id (int), user_id (int), field_value (varchar)我想創建一個中間層用戶,該用戶可以訪問應用程序中的其他用戶。要確定登錄使用的用戶可以訪問哪些用戶,我使用如下的子查詢:SELECT user_id FROM user WHERE user_id      IN (SELECT user_id          FROM user_metadata          WHERE user_metadata_field_id = 1 AND field_value = 'foo')目前,我將子查詢字符串存儲在變量中,然后在每次需要提取用戶列表時將其動態插入到外部查詢中。在這樣做之后,我想,“只需存儲一串實際的user_ids 就更好了”。所以不要將其存儲在變量中......$subSql = "SELECT user_id FROM user_metadata WHERE user_metadata_field_id = 1 AND field_value = 'foo'";...我實際執行查詢并存儲結果,如...$subSql = "12, 56, 89, 100, 1234, 890";然后當我需要拉出登錄用戶可以訪問的點亮用戶時,我可以這樣做:$sql = "SELECT user_id FROM user WHERE user_id IN ($subSql)";最后問題是:您可以在MySQL INCLAUSE中使用多少項?存儲實際的id而不是sub-sql語句每次執行外部查詢必須更快,對吧?
查看完整描述

3 回答

?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

從一定數量開始,IN表格更快。

MySQL 在其代碼中有一些東西使得在大量常量值上構建范圍比在嵌套循環中執行相同操作更慢。

有關性能詳情,請參閱我的博客中的這篇文章

  • 在MySQL中傳遞參數:IN列表與臨時表


查看完整回答
反對 回復 2019-09-02
?
慕姐4208626

TA貢獻1852條經驗 獲得超7個贊

從手冊:


IN列表中的值數量僅受max_allowed_packet值限制。


查看完整回答
反對 回復 2019-09-02
  • 3 回答
  • 0 關注
  • 782 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號