Questions tagged «select»

SELECT是一种核心SQL语句,它从一个或多个表或行集数据的其他来源(例如视图或表值函数)中检索数据。

4
显示表名+ mysql innodb数据库中每个表的记录数
如何列出当前数据库中的所有表以及表的行数。 换句话说,您能想到在mysql中提出类似查询的查询吗? +------------------------++------------------------+ | Tables_in_database | Number of rows | +------------------------++------------------------+ | database 1 | 1000 | | database 2 | 1500 | +------------------------++------------------------+ 欢迎使用不同的方法。
10 mysql  innodb  select  count 

2
SELECT是否像VACUUM一样删除死行?
我在摆弄,VACUUM并注意到一些意外的行为,其中SELECT从表中读取行似乎减少了VACUUM以后的工作量。 测试数据 注意:自动真空已禁用 CREATE TABLE numbers (num bigint); ALTER TABLE numbers SET ( autovacuum_enabled = 'f', toast.autovacuum_enabled = 'f' ); INSERT INTO numbers SELECT generate_series(1, 5000); 试验1 现在,我们对所有行进行更新, UPDATE numbers SET num = 0; 当我们跑步时,VACUUM (VERBOSE) numbers;我们得到了, INFO: vacuuming "public.numbers" INFO: "numbers": removed 5000 row versions in 23 pages INFO: …

2
选择查询花费的时间超过了原先的时间
我有一个具有近2300万条记录的MySQL数据库表。该表没有主键,因为没有唯一的键。它有2列,均已索引。下面是它的结构: 以下是一些数据: 现在,我运行了一个简单的查询: SELECT `indexVal` FROM `key_word` WHERE `hashed_word`='001' 不幸的是,这花费了超过5秒钟才能检索数据并将其显示给我。我的未来表将有1500亿条记录,因此这一次非常高。 我运行Explain命令以查看发生了什么。结果如下。 然后,我使用以下命令运行配置文件。 SET profiling=1; SELECT `indexVal` FROM `key_word` WHERE `hashed_word` = '001'; SHOW profile; 以下是分析的结果: 以下是有关我的表格的更多信息: 那么,为什么要花这么长时间?他们也被索引!将来,我必须运行很多LIKE命令,因此这会花费太多时间。出了什么问题?

3
如何用LIMIT计算行数?
我想捕获X行,因此,我设置了LIMIT X;但是我又如何同时计算总行数呢? 目前,我使用两个单独的查询来执行以下操作: SELECT COUNT(*) FROM col WHERE CLAUSE SELECT * FROM col WHERE CLAUSE LIMIT X 有没有办法在一个查询中做到这一点? 编辑:输出应为col单元格和行数。实际上,在选择了col单元格之后,它应该遍历表格进行计数。 我知道不可能合并这两个查询,因为第一个返回1行,但是第二个返回X行。我很好奇mysql中是否有一个函数在存在时返回行数LIMIT。

2
优化MySQL SELECT语句中TIMESTAMP字段的WHERE条件
我正在为一个跟踪使用时间的分析系统设计一个模式,并且需要查看特定日期范围内的总使用时间。 举一个简单的例子,这种查询类型将经常运行: select sum(diff_ms) from writetest_table where time_on > ("2015-07-13 15:11:56"); 在人口众多的表上,此查询通常需要7秒钟左右。它有约3500万行,运行在Amazon RDS(db.m3.xlarge)上的MySQL上的MyISAM。 摆脱WHERE子句可以使查询仅花费4秒,而添加第二个子句(time_off> XXX)则需要增加1.5秒,从而使查询时间达到8.5秒。 因为我知道通常会完成这些类型的查询,所以我想优化一些东西,使其更快,最好在5秒以下。 我从在time_on上添加索引开始,尽管它大大加快了WHERE“ =”查询,但对“>”查询没有影响。有没有一种方法可以创建可以加快WHERE“>”或“ <”查询的索引? 或者,如果还有其他建议可以查询此类查询的性能,请告诉我。 注意:我使用“ diff_ms”字段作为非规范化步骤(它等于time_off-time_on),这将聚合的性能提高了大约30%-40%。 我正在使用以下命令创建索引: ALTER TABLE writetest_table ADD INDEX time_on (time_on) USING BTREE; 在原始查询上运行“ explain”(使用“ time_on>”)时,time_on是“ possible_key”,而select_type是“ SIMPLE”。“额外”列显示“在何处使用”,“类型”为“全部”。添加索引后,该表显示“ time_on”是“ MUL”键类型,由于同一时间可以出现两次,因此这似乎是正确的。 这是表模式: CREATE TABLE `writetest_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, …

2
如何在select(SQL Server)中使用变量?
如果我想计算一列并将结果用于多于一列,如何在不进行两次计算的情况下做到这一点? 例: SELECT LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com' as EMail ,hashbytes('SHA1', LOWER(SUBSTRING([NAME], 4, 100)) + '@somedomain.com') as HashedEmail FROM sometable 如何避免在不使用多个选择的情况下写两次?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.