查詢資料庫為空的數據
1. 資料庫中的表總是會出現查詢的數據都為null或者為空,但是數據表中確實有數據存在
首先換資料庫,Mysql處理這個數量級數據比較吃力。推薦你用DB2 或ORACLE
如果不能換,檢查一下存儲引擎用InnoDB,如果是,檢查
innodb_flush_log_at_trx_commit 這個選項,是否是1
如果是1 用SET AUTOCOMMIT = 0 ,提高數據修改速度
PHP優化需要
MySQL Slow Log 分析工具分析日誌:mysqlmpslow或mysqlsla比較不錯。
Explain/ DESC 分析SQL 的執行情況和SHOW PROCESSLIST
使用SHOW PROCESSLIST 看是否有鎖表情況,
設置 my.cnf 中的long-query-time 和log-slow-queries 記錄伺服器那些SQL執行速度比較慢
根據上述情況查看對對應的SQL語句進行優化
優化伺服器性能,用RAID5(SAN),加內存本身的升級,提高硬碟I/O性能。
資料庫總體性能優化:
數據表最好能拆成小表。
資料庫切片,分到不用的伺服器上,
資料庫訪問性能優化
修改my.cnf, 下面是影響比較大的:
innodb_flush_log_at_trx_commit 設置為0
如果比下面值大就不用調整了:
query_cache_size 設置為16M
sort_buffer_size 設置為16M
record_buffer 設置為16M
key_buffer_size 設置為8M
innodb_buffer_pool_size 設置為32M
下面是建議設置的
table_cache 設置為512
read_buffer_size 設置為16M
myisam_sort_buffer_size設置為16M
innodb_additional_mem_pool_size 設置為128M
innodb_log_file_size 設置為256M
innodb_log_buffer_size設置為8M
資料庫表優化,
1 建立相應的INDEX
2 統一編碼,MySQL的默認編碼是Latin1,不支持中文,需要把資料庫的默認編碼修改為gbk或者utf8
show variables like 'character%' 查看
另外表的編碼也要與資料庫統一
2. 怎麼查詢資料庫中某一個欄位為空的數據
1、打開您操作資料庫的可視化工具(我現在用的是DbVisualizer)。
2、在sql窗口中編寫查詢語句,我之前遇到這個問題的時候,找了好久都是說使用value,nvl,decode等等函數去操作,這樣用法確實可以,但是不適用於我遇到的這個情況,那些方法只適用於存在此條記錄,但是某一欄位可能為null的情況。
3、在sql窗口中可使用迂迴的方式進行查詢設定默認值。可先查詢是否含有此條記錄存在,如果不存在就給查詢的欄位設定默認值,如果存在就使用子查詢去取該欄位真正的值。