遵守规矩吧,需要那些字段就写哪些字段。当你的查询中有blob,text之类的大字段时,效率影响就很明显了。 举个例子 tableA(id,name,blobx) index(id,name)如果你select id,name from tableA where id=10 and name='a'; 1:这时候通过覆盖索引就可以返回结果集,但是*的时候就不行了。 这是对查询的影响。2:另外如果blobx一条记录200M,如果是*的情况下,这200M是需要从服务器发送到客户端,然后再在客户端被你的应用程序丢弃。这个过程中的效率损耗是完全不必要的。3:在程序处理结果集的时候,有时候是直接拿结果集的INDEX来取值,如rs(0),rs(1),这样的,如果是*,开始的时候一一对应上了,后来在表里加了个字段,不是加在最后的,这时候 rs(0),rs(1)得到的值就是错误的了。需要在代码里重新对应,代码维护麻烦。
1:select * from table
还是
select id,name,title form table
举个例子
tableA(id,name,blobx)
index(id,name)如果你select id,name from tableA where id=10 and name='a';
1:这时候通过覆盖索引就可以返回结果集,但是*的时候就不行了。
这是对查询的影响。2:另外如果blobx一条记录200M,如果是*的情况下,这200M是需要从服务器发送到客户端,然后再在客户端被你的应用程序丢弃。这个过程中的效率损耗是完全不必要的。3:在程序处理结果集的时候,有时候是直接拿结果集的INDEX来取值,如rs(0),rs(1),这样的,如果是*,开始的时候一一对应上了,后来在表里加了个字段,不是加在最后的,这时候 rs(0),rs(1)得到的值就是错误的了。需要在代码里重新对应,代码维护麻烦。