我有一个查询,当我认为它没有使用索引时,所以我出于好奇而转载它:
创建一个test_table包含1.000.000行(10个不同的值col,500个字节的数据some_data).
CREATE TABLE test_table AS (
SELECT MOD(ROWNUM,10) col, LPAD('x', 500, 'x') some_data
FROM dual
CONNECT BY ROWNUM <= 1000000
);
Run Code Online (Sandbox Code Playgroud)
创建索引并收集表统计信息:
CREATE INDEX test_index ON test_table ( col );
EXEC dbms_stats.gather_table_stats( 'MY_SCHEMA', 'TEST_TABLE' );
Run Code Online (Sandbox Code Playgroud)
尝试获得不同的值col和COUNT:
EXPLAIN PLAN FOR
SELECT col, COUNT(*)
FROM test_table
GROUP BY col;
---------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time
---------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | …Run Code Online (Sandbox Code Playgroud) 我在php MySQL中有一个奇怪的问题:
php连接127.0.0.1但不连接localhost.
如何解决这个问题?
所以我有一个user表,其中user.username有许多重复项,如:
username和Username和useRnAme
john和John和jOhn
这是一个错误,这三个记录应该只有一个.
我正在尝试提出一个SQL查询,列出按创建日期排序的所有这些案例,所以理想情况下结果应该是这样的:
username jan01
useRnAme jan02
Username jan03
john feb01
John feb02
jOhn feb03
Run Code Online (Sandbox Code Playgroud)
任何建议将不胜感激
有没有办法将方法拦截器绑定到提供程序而不是实例?
例如,我使用下面的代码绑定拦截器如何将INTERCEPTOR绑定到提供程序,然后绑定到注释?
bindInterceptor(
Matchers.any(), Matchers.annotatedWith(ANNOTATION.class), new INTERCEPTOR());
Run Code Online (Sandbox Code Playgroud) 我现在对项目的这一点,我需要设计我的数据库(Oracle).通常,对于status和countries表,我不使用数字主键
STATUS (max 6)
AC --> Active
DE --> Deleted
COUNTRIES (total 30)
UK --> United Kingdom
IT --> Italy
GR --> Greece
Run Code Online (Sandbox Code Playgroud)
这些表是静态的,不是通过应用程序更新的,并且预计将来不会进行更改,因此在使用这些值作为外键的表中不会出现更新问题.
该应用程序的主表将使用状态和国家(不止一次,例如来源国,目的地国家),预计每年将增加600000行
所以我的问题是,当查询3个表的连接时,这些VARCHAR(2)键是否会对性能产生影响.第一个会明显慢于第二个吗?
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 'AC'
AND m.country_cd = 'UK'
SELECT m.*,
s.status_name,
c.country_name
FROM main m, status s, countries c
WHERE m.status_cd = s.status_cd
AND m.country_cd = c.country_cd
AND m.status_cd = 1
AND m.country_cd = 2 …Run Code Online (Sandbox Code Playgroud) 我想实现这样的目标:
SELECT
(CASE WHEN ...) AS FieldA,
FieldA + 20 AS FieldB
FROM Tbl
Run Code Online (Sandbox Code Playgroud)
假设通过"..."我已经替换了一个冗长而复杂的CASE语句,我不想在选择FieldB和使用别名时重复它FieldA.
注意,这将返回多行,因此在我的情况下,语句之外的DECLARE/ 不好.SETSELECT
想象一下这样的表:
CREATE TABLE [dbo].[test](
[id] [uniqueidentifier] NULL,
[name] [varchar](50) NULL
)
GO
ALTER TABLE [dbo].[test] ADD CONSTRAINT [DF_test_id] DEFAULT (newsequentialid()) FOR [id]
GO
Run Code Online (Sandbox Code Playgroud)
使用如下所示的INSERT存储过程:
CREATE PROCEDURE [Insert_test]
@name as varchar(50),
@id as uniqueidentifier OUTPUT
AS
BEGIN
INSERT INTO test(
name
)
VALUES(
@name
)
END
Run Code Online (Sandbox Code Playgroud)
获取刚刚插入的GUID并将其作为输出参数返回的最佳方法是什么?
意外行为:
我遇到了11g的Oracle序列的奇怪行为(适用于10g):
CREATE SEQUENCE test_sequence START WITH 1;
CREATE TABLE test_table ( val INT );
INSERT INTO test_table VALUES ( test_sequence.NEXTVAL );
Run Code Online (Sandbox Code Playgroud)
即使序列以1开头,插入的第一个值为2:
SELECT * FROM test_table;
VAL
----------
2
Run Code Online (Sandbox Code Playgroud)
预期行为:
NEXTVAL没有插入的选择按预期工作:
CREATE SEQUENCE test_sequence_2 START WITH 1;
SELECT test_sequence_2.NEXTVAL FROM dual
NEXTVAL
----------
1
Run Code Online (Sandbox Code Playgroud)
题:
任何人都可以使用Oracle 11g重现这一点吗?这是一个已知的问题?
我正在使用
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production.
我对Swing中的JFileChooser有疑问.我正在尝试在下拉框中获取多个文件扩展名,但不知道如何操作.
有方法
extFilter = FileNameExtensionFilter(description, extensions);
Run Code Online (Sandbox Code Playgroud)
然后我可以通过写作来使用
fileChooser.setFileFilter(extFilter);
Run Code Online (Sandbox Code Playgroud)
但是,正如您所看到的,这仅支持下拉列表中的一个选项.如何添加更多?
sql ×4
oracle ×3
java ×2
mysql ×2
performance ×2
sql-server ×2
alias ×1
file ×1
guice ×1
indexing ×1
jfilechooser ×1
numbers ×1
oracle11g ×1
php ×1
plsql ×1
postgresql ×1
primary-key ×1
save ×1
sequence ×1
varchar ×1
windows-7 ×1