Mysql寫出高品質的sql語句的幾點建議,mysqlsql

來源:互聯網
上載者:User

Mysql寫出高品質的sql語句的幾點建議,mysqlsql


        CleverCode在實際的工作也寫過一些低效率的sql語句。這些語句會給資料庫帶來很大的壓力,最主要的表現就是sql語句運行慢,後來逐漸的去最佳化和嘗試。總結了一些高品質的sql語句的寫法。這裡CleverCode總結一下分享給大家。

         【 CleverCode發表在csdn部落格中的原創作品,請勿轉載,原創地址:http://blog.csdn.net/clevercode/article/details/46341147】


1 建議一:盡量避免在列上運算      盡量避免在列上運算,這樣會導致索引失效。
1.1 日期運算最佳化前:
select * from system_user where date(createtime) >= '2015-06-01'
最佳化後:
select * from system_user where createtime >= '2015-06-01'
1.2 加,減,乘,除最佳化前:
select * from system_user where age + 10 >= 20
最佳化後:
select * from system_user where age >= 10
2 建議二:用整型設計索引       用整型設計的索引,佔用的位元組少,相對與字串索引要快的多。特別是建立主鍵索引和唯一索引的時候。1)設計日期時候,建議用int取代char(8)。例如整型:20150603。2)設計IP時候可以用bigint把IP轉化為長整型儲存。

3 建議三:join時,使用小結果集驅動大結果集      使用join的時候,應該盡量讓小結果集驅動大的結果集,把複雜的join查詢拆分成多個query。因為join多個表的時候,可能會有表的鎖定和阻塞。如果大結果集非常大,而且被鎖了,那麼這個語句會一直等待。這個也是新手常犯的一個錯誤!最佳化前:
select*from table_a aleft join table_b bon a.id = b.idleft join table_c con a.id = c.idwhere a.id > 100and b.id < 200

最佳化後:
select*from (select*from table_awhere id > 100) aleft join(select*from table_bwhere id < 200)bon a.id = b.idleft join table_con a.id = c.id

4 建議四:僅列出需要查詢的欄位僅列出需要查詢的欄位,新手一般都查詢的時候都是*,其實這樣不好。這對速度不會有明顯的影響,主要考慮的是節省記憶體。最佳化前:
select * from system_user where age > 10
最佳化後:
select username,email from system_user where age > 10

5 建議五:使用批量插入節省互動最佳化前:
insert into system_user(username,passwd) values('test1','123456')insert into system_user(username,passwd) values('test2','123456')insert into system_user(username,passwd) values('test3','123456')

最佳化後:
insert into system_user(username,passwd) values('test1','123456'),('test2','123456'),('test3','123456')

6 建議六:多習慣使用explain分析sql語句


7 建議七:多使用profiling分析sql語句時間開銷     profiling的使用請查看我另外一篇部落格,《Mysql使用profiling分析慢sql語句的原因》:http://blog.csdn.net/clevercode/article/details/46310835。


著作權聲明:1)原創作品,出自"CleverCode的部落格",請勿轉載,否則追究著作權法律責任。
2)原創地址:http://blog.csdn.net/clevercode/article/details/46341147。
3)分類地址(Mysql資料庫總結):http://blog.csdn.net/clevercode/article/category/3262205(部落格持續增加,關注請收藏)
4)歡迎大家關注我部落格更多的精彩內容:http://blog.csdn.net/CleverCode。






相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.