回答
如果發現滿足下面的解決方案。它基於編譯器優化,如果表達式的結果只能返回一行,則使用常量替換表,請參閱MySQL Manual。例如,在指定唯一非空列的值時就是這種情況。
如果你有一些常量,並且不想爲每個函數創建一個函數,這就特別有意義。作爲獎勵,您可以通過使用某個前端方便地編輯常量值(如果它們用於某些配置目的,而不一定需要更改pi),而不是重新定義函數。轉移數據庫可能也更容易,因爲轉儲表比轉儲功能更容易。
CREATE TABLE `constant` (
`id` varchar(45) NOT NULL,
`double_value` DOUBLE DEFAULT NULL,
PRIMARY KEY (`id`)
);
INSERT INTO constant VALUE ('pi', 3.1415);
SELECT constant.double_value/4 FROM constant WHERE constant.id = 'pi';
-- is translated into SELECT 3.1415/4
SELECT table1.field1/constant.double_value
FROM table1, constant
WHERE constant.id = 'pi';
-- is translated into SELECT table1.field1/3.1415 FROM table1
這裏SOM functions in mathematik
和u可以定義這樣的
SET @myVar = 3;
編輯這裏的這個
set @var1 := 0;
set @var2 := @var1 := 5;
select @var1, @var2;
+--------+--------+
| @var1 | @var2 |
+--------+--------+
| 5 | 5 |
+--------+--------+
爲例常數這裏SOM examples
但是我能否在我的所有程序中使用我的var? –
用一些例子編輯。 –
我遇到了這個話題,尋找同一個問題的答案。我的搜索還發現「如何定義可用於多個過程的常量?」在https://forums.mysql.com/read.php?98,273432,274722#msg-274722和「帶有常量的存儲過程」,位於https://forums.mysql.com/read.php?98655459 ,655471#MSG-655471。雖然不太理想,但我計劃將我的實現變量作爲局部變量,名稱用大寫字母表示,這在C和C++中是常見的做法。 –
老闕但由於我現在正在研究這個問題,我自己在這裏是我的兩分錢:
據我所知,沒有用戶可定義常量這樣的事情。但是你可以創建一個函數並讓它返回你想要的值:
CREATE FUNCTION `kMyConstant`()
NO SQL
DETERMINISTIC
RETURNS TINYINT UNSIGNED
BEGIN
RETURN 0;
END
這顯然每次都會返回0。我相當肯定,相比於在代碼中加入0,它會非常低效,但它仍然會在非常小的一秒(每次)中運行。
被警告說,如果放像的查詢:update myTable set myVariable = kMyConstant();
有兩種可能的結果的性能代價:
- 通過將確定性的定義,參數不每行改變它只會評估一次。
- MySQL優化器不是那麼聰明。
拋開性能問題,至少你可以在整個代碼中分散kMyConstant(),並知道它始終是相同的值,並且如果你想改變返回的值,只需更改函數即可。
PS。如果它確實經常重新評估它,那麼你總是可以開始你的程序set @kMyConstant = kMyConstant();
,然後使用@kMyConstant
,但編碼開銷不斷增加,所以我想你的里程將取決於你將如何以及經常使用這個常量。
- 1. MySQL常量表
- 2. 在Php MySql表中更新常量值無實際值
- 3. 常量指針vs常量值指針
- 4. MySql的異常:變量'character_set_client'不能設置爲'utf16'的值
- 5. 由常數量值
- 6. 創建常量值
- 7. 通過變量值獲取常量值
- 8. 尋找DAO.Field.Type的常量值
- 9. NSString表示的常量值
- 10. DWM消息的常量值
- 11. Fortran中的常量值
- 12. 常量的值和RVO
- 13. PostgreSQL:smallint最大值的常量?
- 14. Rails中的常量值
- 15. Android的SQL空常量值
- 16. junit的不同常量值
- 17. 保持變量的常量值在常量中
- 18. 用變量的值初始化常量
- 19. 的Python:轉換的常量值的常量
- 20. MySQL中的觸發器中的常量
- 21. 使用MySQL的SQLAlchemy的語法常量
- 22. 未初始化的常量Mysql的
- 23. AngularJS使用值的值(常量)
- 24. 如何優化MySQL的常量查詢?
- 25. 未初始化的常量Mysql :: error
- 26. 如何在MySQL中指定一個常量值來顯示?
- 27. 如何將常量的值用作常量?
- 28. 對象常量的常量作爲鍵(在密鑰值對)
- 29. 奇怪的MySQL AVG()異常NULL值
- 30. 最常見的值子查詢MySql
僅供參考,['PI()'](http://dev.mysql.com/doc/refman/5。0/en // mathematical-functions.html#function_pi)將返回PI。 – h2ooooooo
@ h2ooooooo,這只是一個例子,我希望聲明自己的constants –