2011-01-11 81 views
4

我想限制用戶提交的mysql查詢結果。 目前我只是通過PHP解析查詢字符串,最後附加LIMIT。 對於具有多個嵌套選擇/連接的更復雜查詢,事情變得複雜且難以預測。 有沒有常用的方法來強制mysql只返回有限的結果,即使用戶有要求全套設置?如何強制MySQL返回有限的行?

感謝
阿爾曼

+3

LIMIT是正確的做法。你想要達到什麼目標? – 2011-01-11 08:06:45

+0

我有一張4TB的桌子,但是我希望允許檢索最多50行。用戶被允許以只讀模式訪問。 – Arman 2011-01-11 08:19:06

回答

2

您所要求的某些服務器配置設置來限制所有查詢返回的行的最大數量。也就是說,即使表中有更多的行,select * from mytable將返回最大x數(x在全局服務器配置中設置)或行。

不幸的是,這在MySQL的標準發行版中是不可能的。您可以設置每小時最大查詢限制,即使用戶可以在服務器中執行的操作。但是,查詢結果中的行數限制不能全局設置。

但是,您可以獲取MySQL社區版源代碼並添加全局查詢結果限制的配置。另外,如果您使用某種連接器連接到MySQL(例如,如果您從.NET連接到MySQL),則可以保持服務器原樣但修改連接器代碼並在其中添加所需的限制配置選項。