select *與select 所有欄位的查詢效率比較
mysql 5.1.37
表記錄數41,547,002,即4000w行
使用遠端客戶端取1000條資料,統計時間:
SELECT * FROM dmsp
.dmsp_dimension_content
LIMIT 0, 1000;
時間2.218s,網路消耗0.547s
SELECT id
, appid
, aop
, t
, uid
, sid
, pid
, pname
, bid
, bname
, ptype
, sm
, sv
, bt
, national
, area
, ov
FROM dmsp
.dmsp_dimension_content
LIMIT 0, 1000;
取出所有欄位,時間2.250s,網路消耗0.578s
多次查詢(改變limit條件避免快取),時間變化不大。
結論:兩者差別幾乎可忽略。所以查詢所有欄位(或者大多數字段)的時候,大可select *來操作。如果某些不需要的欄位資料量特別大,還是寫清楚欄位比較好,因為這樣可以減少網路傳輸。
(1)SELECT *,需要資料庫先 Query Table Metadata For Columns,一定程度上為資料庫增加了負擔。
但是實際上,兩者效率差別不大。
(2)考慮到今後的擴充套件性。
因為程式裡面你需要使用到的列畢竟是確定的, SELECT * 只是減少了一句 SQL String 的長度,並不能減少其他地方的程式碼。
綜上:除平時練習使用,其他情況都不推薦使用 SELECT * FROM xxx
相關推薦
MySQL中exists與in的使用 以及查詢效率比較
exists對外表用loop逐條查詢,每次查詢都會檢視exists的條件語句,當 exists裡的條件語句能夠返回記錄行時(無論記錄行是的多少,只要能返回),條件就為真,返回當前loop到的這條記錄,反之如果exists裡的條 件語句不能返回記錄行,則當前loop到的這條
select *與select 所有欄位的查詢效率比較
mysql 5.1.37 表記錄數41,547,002,即4000w行 使用遠端客戶端取1000條資料,統計時間: SELECT * FROM dmsp.dmsp_dimension_content LIMIT 0, 1000; 時間2.218s,
HIVE中select除了某些欄位之外的剩餘所有欄位
這是HIVE中查詢語句的一個小技巧,一個表有很多欄位,我們想要除個別欄位外的剩餘所有欄位,全部列出來不方便且不美觀,實際上hive語句可以解決這個問題。選擇tableName表中除了name、id、pw
sqlite3 -- 查詢指定名字中年齡最大的一行所有欄位資訊
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> static int callback(void *data, int argc, char **argv, char **azColName
JavaScript遞迴遍歷輸出json所有欄位與值的方法
宣告一個三層的json物件作為測試: var js={ "text":"MXCHIP won a prize", "id": 1234, &nbs
oracle利用分析函式row_number()over()查詢一張表所有欄位並按照其中部分欄位分組查詢某欄位最大值
先準備資料: deptid :部門id. parent_deptid :deptid 的父級部門,也就是depid 是他的子部門。 create table test_employee (empid int ,deptid int ,parent_deptid int,sa
sql 查詢除某一欄位外的所有欄位
方法1. 直接寫 select 列1,列2...列n from 你的表 方法2. 從syscolumns中提出欄位資訊,用生成SQL語句的方法 declare @sql varchar(8
oracle 查詢所有表 表所有欄位
列出當前DB中所有表: select table_name from user_all_tables 列出表中所有欄位: select colu
sqlite系統表介紹(查詢資料庫中所有的表 查詢表中的所有欄位)
每一個 SQLite 資料庫都有一個叫 SQLITE_MASTER 的表, 裡面儲存著資料庫的資料結構(表結構、檢視結構、索引結構等),只可以對他使用查詢語句 SQLITE_MASTER 表DDL資訊如下: CREATE TABLE sqlite_master (type
mysql如何查詢一個表中所有欄位的名字
用easyui datagrid 想動態生成列,在伺服器端執行,由於欄位用英文,所以需要查詢相應的註釋作為datagrid的表頭 mysql不區分大小寫,所以下面的大寫都可以換成小寫; select COLUMN_NAME,column_comment from INFORMATION_SCHEMA.Co
Java反射程式碼 得到某類的所有欄位 getFields()與getDeclaredFields()區別 getMethod()和getDeclaredMethod()區別
** * 得到某類的所有欄位 * */ public void reflect2(){ try { Class cls = Class.forName("entity.UserBean");//載入UserBean類到記憶體中!獲取一個Cla
模糊查詢資料庫所有欄位的值
模糊查詢資料庫的所有值,例如:輸入 張 顯示資料庫裡所有含有張的資訊 因為還是模糊查詢,所以想到的解決思路是對所有欄位進行查詢 這時候就遇到了問題。一般模糊查詢用的是 select * from 表名 where 列名 like '%%'; 但是查詢所有列不可能手動
查詢postgresql資料庫所有表中的所有欄位包含一個字串
宣告:不是通過sql語句查出來的,是藉助Navicat資料庫管理功能實現的. 具體操作如下: 開啟navicat資料庫管理工具,找到你要操作的資料庫,右鍵模式下的表 單擊在模式中查詢 看到
Django Field lookups (欄位查詢)
欄位查詢是指定SQL WHERE子句的核心內容的方式。 它們被指定為QuerySet方法filter()、exclude()和get()的關鍵字引數。 1、exact:精確查詢。如果為比較提供的值為None,則會將其解釋為SQL NULL 在MySQL中,資料庫表的“排序”設定決定了精確的比較是否區
Oracle與mysql的欄位型別整理
Oralce的欄位型別整理如下: Mysql的欄位型別整理如下: 最後面一欄是對應JAVA的基本型別。希望對初學者有用,初學者在學習JAVA的時候,不知道怎麼把JAVA的物件指向到ORALCE或者MYSQL的欄位中,通過這個表格 可以很清楚的瞭解到,物件對映成資
mysql多欄位查詢去重
當資料表有主鍵時,使用group by 獲取相同欄位的最大主鍵即可,code如下: SELECT rn.* FROM table_name rn WHERE rn.id IN ( SELECT MAX(r.id) from table r GROUP BY a,b,c,d )
mysql資料庫中指定值在所有表中所有欄位中的替換
MySQL資料庫: 指定值在資料庫中所有表所有欄位值的替換(儲存過程): 1.寫一個儲存過程,查指定資料庫中所有的表名: CREATE PROCEDURE init_replace(in orig_str varchar(100),in new_str varchar(100),in db_n
django資料欄位查詢
5.2.4 欄位查詢 相當於sql語句中where子句,它可以為filter、exclude和get方法提供引數。 屬性名稱__比較運算子=值 #是兩個下劃線 操作符 說明 示例
mysql find_in_set 和 like進行欄位查詢時的對比
find_in_set()和like的區別: 在mysql中,有時我們在做資料庫查詢時,需要得到某欄位中包含某個值的記錄,但是它也不是用like能解決的,使用like可能查到我們不想要的記錄,它比like更精準,這時候mysql的FIND_IN_SET函式就派上用場了,下面來看一個例子。
Java 讀取任意shapefile的所有欄位,並插入到MongoDB資料庫(Spring Boot)
文章目錄 Java 讀取任意shapefile的所有欄位,並插入到MongoDB資料庫(Spring Boot) 1. 統一返回結果封裝 2. shp檔案資料實體封裝 3. 核心程式碼