語法
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供治多網(wǎng)站建設(shè)、治多做網(wǎng)站、治多網(wǎng)站設(shè)計、治多網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、治多企業(yè)網(wǎng)站模板建站服務(wù),十載治多做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
show create {procedure|function} sp_name;
例如查看存儲過程myPro的創(chuàng)建語句
show create procedure myPro;
查看自定義函數(shù)myFunc的創(chuàng)建語句
show create function myFunc;
mysql 5.5.54 支持 預(yù)編譯
開始安裝mysql
1.1 創(chuàng)建用戶和組
groupadd mysql
useradd mysql -s /sbin/nologin -M -g mysql
1.2 解壓編譯MySQL
cd /root/tools
tar zxf mysql-5.5.32.tar.gz
cd mysql-5.5.32
#圖一
cmake . -DCMAKE_INSTALL_PREFIX=/application/mysql-5.5.32 \
-DMYSQL_DATADIR=/application/mysql-5.5.32/data \
-DMYSQL_UNIX_ADDR=/application/mysql-5.5.32/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0
#圖二
make make install
#圖三
3
1.3添加鏈接
ln -s /application/mysql-5.5.32/ /application/mysql
某需求某一條 SQL 語句可能會被反復(fù)調(diào)用執(zhí)行,或者每次執(zhí)行的時候只有個別的值不同(比如 select 的 where 子句值不同,update 的 set 子句值不同,insert 的 values 值不同)。如果每次都需要經(jīng)過上面的詞法語義解析、語句優(yōu)化、制定執(zhí)行計劃等,則效率就明顯不行了。
所謂預(yù)編譯語句就是將此類 SQL 語句中的值用占位符替代,可以視為將 SQL 語句模板化或者說參數(shù)化,一般稱這類語句叫Prepared Statements。
預(yù)編譯語句的優(yōu)勢在于歸納為:一次編譯、多次運(yùn)行,省去了解析優(yōu)化等過程;此外預(yù)編譯語句能防止 SQL 注入。
注意:雖然可能是通過預(yù)處理 SQL 的方式一定程度的提高了效率,但是對于優(yōu)化而言,最優(yōu)的執(zhí)行計劃不是光靠 SQL 語句的模板化來實(shí)現(xiàn)的,往往還是需要通過具體值來預(yù)估出成本代價。
MySQL 官方將 prepare、execute、deallocate 統(tǒng)稱為 PREPARE STATEMENT。
步驟大概分為四步:
1 set —— SET @s = 'SELECT SQRT(POW(?,2) + POW(?,2)) AS hypotenuse';
2 prepare —— PREPARE stmt2 FROM @s;
3 execute —— EXECUTE stmt2;
4 deallocate —— DEALLOCATE PREPARE stmt2;