我有一个只有一个列的表,我用两种方式查询它:
SELECT * FROM sequences WHERE seqs="blablabla"
SELECT * FROM sequences WHERE seqs LIKE "blablabla%"
要使这些查询使用索引,我似乎需要两个索引(每个查询类型一个),如下所示:
用于第一个查询的CREATE INDEX test_nocol ON sequences(seqs)。
用于第二个查询的CREATE INDEX seqs_index ON sequences(seqs COLLATE NO
给定Sql Server 2012数据库中的以下视图:
create view vManyUnions as
select 1 as p, a from vSubQuery_1
union all
select 2 as p, a from vSubQuery_2
union all
select 3 as p, a from vSubQuery_3
...
union all
select n as p, a from vSubQuery_n
create view vSubQuery_1 as
select a fr
我有以下两个SQL语句
第一个:
IF(@User_Id IS NULL)
BEGIN
SELECT *
FROM [UserTable]
END
ELSE
BEGIN
SELECT *
FROM [UserTable] AS u
WHERE u.[Id] = @User_Id
END
第二个:
SELECT *
FROM [UserTable] AS u
WHERE (@User_Id IS NULL OR u.[Id] = @Us
我没有看到这个实现中的错误:
CREATE FUNCTION foo(anyelement) RETURNS SETOF int AS $f$
SELECT id FROM unnest(array[1,2,3]) t(id)
WHERE CASE WHEN (pg_typeof($1)::text)='integer' THEN $1::int>2 ELSE true END
$f$ LANGUAGE SQL IMMUTABLE;
SELECT * FROM foo(123); -- OK!
SELECT * FROM foo('test&
我在DBMS中有这个存储过程(Postgresql)
CREATE OR REPLACE FUNCTION getallentree()
RETURNS SETOF entree AS
$BODY$
begin
select * from entree ;
end;
$BODY$
LANGUAGE plpgsql
调用此过程后:
select * from getAllEntree();
我收到这个错误:
ERROR: query has no destination for result data
HINT: If you want to discard the
我对where条款的订购有问题。
从其他问题中可以看出,where子句的顺序不会影响sql查询的性能,但是随着顺序的改变,我的查询性能也会发生变化。
select sql_no_cache idx
from rr
where (timestamp >= '2016-11-28' and timestamp <= '2016-12-28')
and ((select name from xx where midx=rr.midx) like 'test'
比
select sql_no_cache idx
from rr
where
在我参加的一次面试中,我被要求优化SQL查询。表PRODUCTS结构如下所示:
PRODUCT_NAME -它有大约200个重复的唯一值
状态-它有大约20个重复的唯一值。
国家-它有大约5个独特的值重复。
该表包含100万行。我收到了下面的SQL语句,并被要求完成它。SQL将获取特定状态的所有产品。
SELECT _______
FROM PRODUCTS
WHERE STATE = 'CALIFORNIA'
我的答案如下:
SELECT PRODUCT_NAME, STATE, COUNTRY
FROM PRODUCTS
WHERE STATE
我想知道是否有一种方法可以执行这种查询(可选的where子句),而不会对sql施加这样的负载。
SELECT *
FROM TABLE
WHERE
Name = IsNull(@Name,Name)
AND (
(@MinAge IS NULL AND @MaxAge IS NULL)
OR
(@MinAge IS NOT NULL AND @MaxAge IS NOT NULL AND Age BETWEEN @MinAge AND @MaxAge)
)
我知道我可以使用EXEC将其作为变量执行,并在需要的地方包含
我总是写很长的sql,但为了以后的维护。一个sql语句是否更好地划分为多个语句?示例:
select a.a1, a.a2, b.b3, sum(c.c4), b.b4...b.bn
from A a
inner join B b on a.a1=b.b1
left join C c on a.a2=c.c2
group by a.a1, a.a2, b.b3, b.b4,...,b.bn
我分成
create temp_table select a.a1, a.a2, sum(c.c4)
from A a
left join C c on a.a2=c.c2
group by a.a1, a
在Sql server (2008版本)中,我有两个类似的查询:
Select * from sampleTable into #tempTable
或
Select * into #tempTable from (Select Query) as someTableName
这些查询是否对性能或内存空间有好处?或者两者都一样好。
这是众所周知的,他们个人比
Insert into Temp
<Query>
但是如果和对方相比的话。
更新文本:两个查询如下:
Select A,B,C into #tempTable from TestTable
或
Select * into
我在linq中创建了一个查询,它返回了我店里最活跃的销售人员的表:
ProjectDB3Context db = new ProjectDB3Context();
db.Database.Log = message => Trace.WriteLine(message);
var result = db.tblUsers.Join(db.tblSales,
u => u.ID,
sl => sl.tblUserId,
考虑两个sql查询
select a+b absum from my_table order by a+b;
select absum from (select a+b absum from my_table) order by absum;
在性能方面有什么不同吗?我想知道SQL是如何执行查询的:它会计算一次或两次a+b吗?还有什么提高性能的把戏吗?
在执行大计数时,这两个sql count语句之间的性能差异是否很大(在这里,大意味着100k以上的记录)
首先:
SELECT count(*) FROM table1 WHERE <some very complex conditions>
第二:
SELECT count(*) FROM (SELECT * FROM table1 WHERE <some very complex conditions>) subquery_alias
我知道第一种方法是正确的,但我想知道这条语句是否会执行类似的操作?
我使用hibernate和视图(注释@Subselect和@Synchronize)和过滤器。问题是hibernate封装查询(由@Subselect注释的“value”属性定义),性能变得非常慢。
例如,如果我编写自己的SQL查询(执行不超过100 is ),则如下所示:
SELECT id,
country_id,
firstName,
lastName
FROM client
WHERE client.country_id IN (2564,2558,1452,3652)
但是,如果我使用hibernate和过滤器,生成的查询将是:
SELECT
在LINQ中,我试图加入为全文搜索和可查询结果编写的自定义函数。
但是,当我尝试to_ret.select(--something--).ToList()时,我会得到以下错误
嵌套查询没有适当的键。
LINQ代码:
var sql_query = db.search(st);
var to_ret = from ts in sql_query
from t in table
where t.Id == ts.Value select t;
to_ret = to_ret.Include(x => x.tab
我正在间接地从The essence of SQL上学习SQL Cookbook,这本书出版后引入了现代的SQL运算符,其中有一节介绍了它。
演习:
给予:
create table student
( sno integer,
sname varchar(10),
age integer
);
--
/* table of courses */
create table courses
( cno varchar(5),
title varchar(10),
credits integer
);
/* table of students and the courses the
我注意到,包含ROW_NUMER()代码的预准备语句经常被重新编译,尽管它们的SQL代码没有改变。
(来自《Microsoft SQL Server 2008: T-SQL查询》一书中的示例):
WITH SalesRN AS (
SELECT
ROW_NUMBER() OVER (ORDER BY qty, empid) AS rownum,
empid,
mgrid,
qty
FROM
dbo.SalesOrder
)
SELECT
rownum,
empid,
mgrid,
qty
FROM
SalesRN
WHERE
rownum > 100
我试图在mysql列中获得最高值和最低值,但我不知道这是否可能!
我在正式的MYSQL论坛上看到了这段代码,但我真的不知道如何将这些值作为PHP变量来获得!
SELECT
(SELECT `price` FROM mytable ORDER BY `price` LIMIT 1) AS lowest,
(SELECT `price` FROM mytable ORDER BY `price` DESC LIMIT 1) AS highest
因此,基本上,我需要做的是从mysql问题中创建PHP变量,得到最高值为$hiestprice,最低值为$lowestprice。
所以我走了,我做到了
我正在使用SQL Server 2008R2。
我有以下设置:
-- Query #1
SELECT * FROM
Product P
INNER JOIN ProductComments C ON C.ProductId = P.ProductId
-- Query #2
SELECT * FROM
GetAllProducts() P
CROSS APPLY GetCommentsOfProduct(P.ProductId) C
GetAllProducts()在哪里
CREATE FUNCTION GetAllProducts
(
)
RETURNS TABLE
AS
我一直在做一个在两个数据库之间搜索匹配的项目,但是当cronjob运行时,我会得到一个503错误。
变量源是像“Peter”或“Margot”这样的名称。name_key是数组的键,如'name‘或'event’。
global $dbh;
global $dbh_second;
$import_sql = $dbh->prepare('SELECT name_key FROM imports WHERE name = :source');
$import_sql->bindParam(':source', $source, PDO
有没有一种跨数据库(至少是SQL Server、Oracle、Postgre、MySQL、SQLite)的方法来完成我在T-SQL中使用
SELECT 1 WHERE EXISTS (SELECT * FROM Foo WHERE Bar = 'Quux')
这似乎不是有效的ANSI SQL语法,因为没有FROM子句。目前我使用COUNT(*)来做这件事,但我不认为这是最好的。
当我开始在大型表上编写SQL查询时,我想知道哪一个最有效。对我来说他们看起来都一样。希望了解SQL将如何分解和执行这些查询。
备选案文1:
select a.*
from table_a a
where a.column in (select filter from table_b)
备选案文2:
select a.*
from table_a a, table_b b
where a.column=b.filter
备选方案3:
select a.*
from table_a a
inner join table_b b
on a.column=b.filter
我有一个多层的父子关系,我想把它们列在一个树形结构中。我有一个表,里面有像id,parent_id.I这样的字段
$sql = 'SELECT * FROM list WHERE parent_id = 0';
$result = mysql_query($sql, $link);
while ($row = mysql_fetch_array($result)) {
echo $row['id'].'<br>';
$child1_sql = "SELECT * FROM list WHERE paren
在优化计划以执行任何sql请求时,如果使用来自检查是否显示行的包中的过程,以及在没有过程的情况下构造普通sql查询,有什么不同吗?
我是说,sql计划应该有什么区别吗?以及它如何影响执行的性能。
例如
select * from atbl t where checkme(t.fld) = 1;
或
select * from atbl t where t.fld = 'OK'
提前谢谢你。
我使用BigQuery / Spark已经有几年了,但是我不太熟悉server。
如果我有这样的查询
with x AS (
SELECT * FROM bigTable1
),
y AS (SELECT * FROM bigTable2)
SELECT COUNT(1) FROM x
SQL Server会“聪明”到忽略无意义的数据获取吗?
注意:由于我的环境的配置,我无法访问查询计划器进行故障排除。
我有两个类似于此的不同sql语句:
SELECT * FROM complicated_view v WHERE v.day = DATE '2020-01-25';
SELECT * FROM complicated_view v WHERE v.day = DATE '2021-01-25';
虽然它们都可以用相同的执行计划执行,但它们不能。一个是慢的,另一个是快的。现在我想弄清楚为什么。我目前正在寻找的是一种评估由其sql_id识别的具有不同执行计划的SQL语句的方法,因此我可以看到优化器估计的哪一步非常昂贵。就像这样:
select * from tab
我的CS-Cart 4.2出了点问题。我有大约70万个过滤器和180k个产品。有时,查询完成大约需要170秒。
d | User | Host | db | Command | Time | State | Info | Progress |
+-------+------------------+--
如何选择sql索引
我有一个带有字段c_ID (primary key)和c_Emp_ID的表TabEmp。
我使用字段c_ID (primary key)和c_Emp_ID在idx_TabEmp (non-clustered)上创建了一个索引
我正在使用select语句
select * from index = idx_TabEmp
它抛出一个错误
Incorrect syntax near 'index'. If this is intended as a part of a table hint, A WITH keyword and parenthesis are
SQL Server优化子选择是否使用WHERE子句外部的筛选器?
举个例子:
SELECT * FROM BIGTABLE //花了10秒
SELECT * FROM (SELECT * FROM BIGASSTABLE) a WHERE column1 = 2 //small subset耗时2秒
我的测试表明确实如此..。
sql join语句中表的顺序是否有意义?例如
SELECT dept_name, emp_name
FROM Employee
INNER JOIN Department ON Employee.dept_id = Department.dept_id
和
SELECT dept_name, emp_name
FROM Department
INNER JOIN Employee ON Employee.dept_id = Department.dept_id
表的顺序有什么性能上的优势吗?
我有一个类似于下面的sql命令。
select * from table1
where table1.col1 in (select columnA from table2 where table2.keyColumn=3)
or table1.col2 in (select columnA from table2 where table2.keyColumn=3)
它的性能真的很差,所以我如何更改这个命令?(请注意,偏执中的两个sql命令完全相同。)
编译器是否会优化格式化得很好的字符串,或者代码的运行速度会比那些无法以可读方式分割的字符串慢吗?
例如
string sql =
"select * " +
"from person " +
"where id = :id";
或
string sql = "select * from person where id = :id";
这只是一个小例子。您知道sql可能会变得多么复杂。