国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

數據庫設計及日常使用規范-高效SQL

2019-11-08 20:59:23
字體:
來源:轉載
供稿:網友

盡量不使用select *

會使用更多的資源(CPU、IO、網絡帶寬)取出了無用的列,如果表上有過多的列,相當的慢用不了索引覆蓋數據

不在索引上做運算

無法使用索引,導致全表掃描

例:        Select col1,col2 From table Where id + 1 = 1234;        Select col1,col2 from table where date(create_dt) = ‘2015-11-11’;

避免%前綴模糊查詢

使用不了索引使用全表掃描例:        Select col1,col2 from table where name like ‘%xxx%’;        改為:’xxx%’

相同數據類型的列值進行比較

比如字符字段進行等值查詢例:mobile 字段為字符類型

limit分頁

傳統分頁             Select col1,col2 from table limit 0,10limit offset,rows             分頁越大,sql查詢越耗時推薦select col1 from table where id > 10000 limit 10;select col1 from table where id > (select id from  table limit 100000,1) limit 10;先根據分頁條件取出需要的ID,再根據ID查找出本頁需要的數據字段信息。

         select a.col1,a.col2 from table a inner join (select id from table where xxxx order by xxx desc limit 100000,10) b on (a.id = b.id)        注:經測試,性能大概可以提升20-30 %

使用union all而非union

如果無需對結果進行去重,就使用union allunion 會對記錄進行去重,額外開銷

少用order by,group by, distinct

如果程序沒有要求,就不用這些操作。排序是相當浪費資源的

盡量不用子查詢in

大部分情況下性能低下使用join操作例:Select col1,col2 From table1 Where id in (select id from table2 where xxx);改用:Select a.col1,a.col2 From table1 a Inner join b on (a.id = b.id) Where xxxx;

避免使用insert xx select **

會對select 中出現的表的記錄進行鎖定 改成:             select *** into outfile xxxx;             再             load data infile xx into table ;

更新表中記錄時

在對表中的記錄進行更新時,盡量用到主建列或索引列(行級鎖)。如果沒有使用索引,會對全表進行鎖定(表鎖)。影響其它程序的更新。

關于索引

前提是innodb表如果有自增列做主鍵,比沒有索引的情況,寫入速度約提升3.11%。如果有自增列做主鍵,并且有其它索引,相對完全沒有索引的情況,寫入速度約降低27.37%。加快查詢速度。為什么有時候不使用索引,如果掃描的行數大于表中的30%時,可能會使用到全表掃描。選擇合適的索引。

避免大的SQL

一條大的SQL可能堵死數據庫。特別是大量的更新的時候,拆成多個小事務。少用多張表join,分解成多個select。避免大SQL,大事務,大批量。盡可能避免大的SQL,無法避免可以分解成多個小SQL。避免返回結果中有太多的行或太多的列。避免分析大量的行,比如排序


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 洪江市| 喀什市| 泗水县| 漳州市| 合作市| 仙居县| 成安县| 沁水县| 隆回县| 黔江区| 泸定县| 泽库县| 三门峡市| 浦北县| 黔西县| 庆元县| 永胜县| 舞钢市| 疏勒县| 鄂伦春自治旗| 湟源县| 外汇| 太湖县| 德阳市| 五台县| 临颍县| 喀喇沁旗| 谷城县| 禹州市| 涿鹿县| 江城| 康马县| 马山县| 铁力市| 威宁| 江西省| 东莞市| 尼勒克县| 莱芜市| 固阳县| 克什克腾旗|