mysql優化相關知識點

2021-07-16 14:56:17 字數 1337 閱讀 1983

所有字段建議設定為非null,從效率和索引上來說,null佔空間並且不走索引,所以請將所有字段設定為非null

有些欄位在程式中設定當值為某個具體數的時候表示為空,但這個數字在程式中又是根據不定值得來的,有可能真正有意義的數字是這個為空的數字,建議將為空的表示做成不在程式範圍的數字

有些表有建立時間或者更新時間,建議使用timestamp型別,自動更新,要求mysql5.5以上

建議所有時間字段,用整型儲存unix時間戳,即int(10) unsigned not null default '0',這樣可以避免不同機器時區的問題,並且效率更高

建議所有的表都擁有自增主鍵(如果可以,所有主鍵最好以id命名。)

建議除主鍵外,所有字段設定預設值,不能明確知道預設值的,字元型別設定為『』,數字型別設定為0

如果保證了所有表都有主鍵後,下一步在程式中,不管什麼條件得到列表,建議只取id,再根據id取內容,或者使用join

select id from table where 條件 limit 條數頁碼

select * from table where id>(select id from table where 條件 limit 條數頁碼) and 條件 limit 條數

select * from table as a join (select id from table where 條件 limit 條數頁碼) as b on a.id=b.id

關於float型別,由於float是單精度型別,進行計算時採用的是浮點計算,即位數不足補位運算時會產生誤差,如果有float型別的,並且要在程式中進行計算的,建議修改為decimal型別,decimal是雙精度型別,計算時採用定點計算,精度較高

關於座標,根據谷歌的建議是使用  float( 10, 6 ) not null

===================================資料庫查詢語句

select

ordinal_position as "序號",

column_name as "字段",

column_type as "型別",

column_key as "鍵",

is_nullable as "允許為空",

if(isnull(column_default),

"null",column_default) as "預設值",

if(extra!="",concat_ws(",",extra,column_comment),column_comment) as "注釋"

from information_schema.`columns`

where table_schema="庫名" and table_name="表名";

Mysql相關知識點

1 對於mysql表中有乙個時間字段,要根據時間字段計算,在某一時間段中,該表中的所有記錄。例子如下 在t druid info表中,ctime是時間字段,查詢t druid info表中,七月份接入的,並且執行著的任務總數,sql語句如下 select count from t druid inf...

mysql索引優化知識點

想要了解索引的優化方式,必須要對索引的底層原理有所了解 索引的用處 索引的分類 面試技術名詞 索引採用的資料結構 索引匹配方式 create table staffs id int primary key auto increment,name varchar 24 not null default...

相關知識點

nweb inf uclasses uweb.xml ulib n 從httpservlet 繼承,重寫doget dopost方法 n部署web.xml n 只有乙個物件 n 第一次請求的時候被初始化,只一遍 n 初始化後先呼叫init 方法,只一遍 n 每個請求,呼叫一遍service serv...