根据你说的需求:
"可程序中需要查询每行的所有数据"、“查询全部九百万条数据”
-------------------------------
这样的需求跟索引没有关系了(因为已经肯定是走全表扫描的了),要提高效率的办法就是:1、提高硬盘的io速度;2、增加内存以使sql server有更多的缓存。
另外,你程序不要一次性取那么多数据返回,这样会拖死的,建议你考虑变换下处理逻辑(如:分批取回--可以根据id列值进行分批;将数据直接在服务端存成文本再传回本地处理)。
"而是需要根据这些数据逐一进行其他功能的操作,这款程序是不联网的"
--------------------------------
就算这样的话,也不能一次性把9百万数据一次性取回,如果你非要取出来再操作的话,那你得考虑分批去取。或者你把处理逻辑写在存储过程,然后由SQL SERVER本身去完成逻辑处理。总之,不管怎样,你也是得优化你现在的处理逻辑(现有处理逻辑我觉得不合理,效率很低下)。
“真正部署到电力网的服务器上速度会不会提高呢”
------------------------
服务器当然比你本地要快得多啦,硬件配置根本就不同一个级别,但不管怎样,还是建议你参考上面的建议优化你的处理逻辑才行,否则,你系统的效率将很低。
2. 在sql语句多表连接中,in、exists、join哪个效率更高一点
EXISTS、IN与JOIN,都可以用来实现形如“查询A表中在(或不在)B表中的记录”的查询逻辑。x0dx0ax0dx0a在查询的两个表大小相当的情况下,3种查询方式的执行时间通常是:x0dx0aEXISTS <= IN <= JOINx0dx0aNOT EXISTS <= NOT IN <= LEFT JOINx0dx0a只有当表中字段允许NULL时,NOT IN的方式最慢:x0dx0aNOT EXISTS <= LEFT JOIN <= NOT INx0dx0ax0dx0a但是如果两个表中一个较小,一个较大,则子查询表大的用exists,子查询表小的用in,因为in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。而无论那个表大,用not exists都比not in要快。这是因为如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;而not extsts 的子查询依然能用到表上的索引。x0dx0ax0dx0aIN的好处是逻辑直观简单(通常是独立子查询);缺点是只能判断单字段,并且当NOT IN时效率较低,而且NULL会导致不想要的结果。x0dx0aEXISTS的好处是效率高,可以判断单字段和组合字段,并不受NULL的影响;缺点是逻昌数辑稍微复杂(通常是相关子查询)。x0dx0aJOIN用在这种场合,往颂岁往是吃力不讨好。JOIN的用途耐樱首是联接两个表,而不是判断一个表的记录是否在另一个表。
3. SQL两表查询用什么命令
命令:
select
sql 数据库查询表格的命令:用SELECT 语句
用法:
查询某一列:SELECT 列名称 FROM 表名称
查询所有列:SELECT * FROM 表名称
注释:
SQL 语句对大小写不敏感。SELECT 等效于 select。
1、sql多表关联查询跟条件查询大同小异,主要是要知道表与表之前的关系很重要;
2、userinfo(用户信息表)表中有三个字段分别为:user_di(用户编号),user_name(用户姓名),user_dep(用户部门) 。(关系说明:userinfo表中的user_dep字段和dep表中的dep_id字段为主外键关系,userinfo表中的user_sex字段和sex表中的sex_id字段为主外键关系)。
4. abap中查询多个表的数据 我用什么SQL语句速度最快。 (用INNER JOIN 还是 用别的 请高手解答)
inner join 尽量别超过3张表
如果表多 可以查出结果集后用 FOR ALL ENTRIES IN
分开查询 用的时候别忘查询是否为空
5. sql怎么查询所有表
使用show tables语句就可以显示当前数据库中所有的表。
查找所有表的具体语句的例子如下:
1、selecttable_name
frominformation_schema.tables
wheretable_schema='当前数据库'
2、select name from SysObjects where type='u'
(5)sql查询表格最快的方法扩展阅读:
查询指定数据库中指定表的所有字段名,例如:column_name
select column_name from information_schema.columns
where table_schema='csdb' and table_name='users'
查询的其他语句:
select * from all_col_comments –查询所有用户的表的列名野颂和注释。
select * from user_col_comments – 查询本用户的表的列名孙改和注释 。
select * from all_tab_columns –查询所有用户的表的列名等信息(详细但是没有则脊判备注)。
select * from user_tab_columns –查询本用户的表的列名等信息(详细但是没有备注)。
6. SQL数据库 查询方法
--SQL 查询所有表名:
SELECT NAME FROM SYSOBJECTS WHERE TYPE='U'
SELECT * FROM INFORMATION_SCHEMA.TABLES
--查询表的所有字段名:
SELECT NAME FROM SYSCOLUMNS WHERE ID=OBJECT_ID(' 表名' )
SELECT * FROM INFORMATION_SCHEMA.TABLES
SELECT * FROM INFORMATION_SCHEMA.VIEWS
SELECT * FROM INFORMATION_SCHEMA.COLUMNS
---------以下为其他数据库查询表----------
--ORACLE 查看所有表名:
SELECT TABLE_NAME FROM USER_TABLES
--ACCESS 查看所有表名:
SELECT NAME FROM MSYSOBJECTS WHERE TYPE=1 AND FLAGS=0
--MSYSOBJECTS 是系统对象,默认情况是隐藏的。通过工具、选项、视图、显示、系统对象可以使之显示出来。