我经常使用下面的查询:
SELECT * FROM table WHERE Timestamp > [SomeTime] AND Timestamp < [SomeOtherTime] and publish = 1 and type = 2 order by Timestamp
我想优化这个查询,我正在考虑把timestamp作为聚集索引的主键的一部分,我认为如果timestamp是主键的一部分,那么插入到表中的数据将按timestamp field.Also顺序写入磁盘。我认为这会大大改善我的查询,但不确定这是否会有帮助。
table has 3-4 million+ rows
我从sql地理开始,我进行了一个查询,以获取在多边形中发送的所有存储点,它得到了正确的结果,但执行起来需要很长时间。如何才能更好地执行此查询?
PS:我在5.5.62上使用mysql。
我的问题是:
SELECT id, name
FROM geolocations
WHERE id in ( SELECT geo_id FROM users) AND
CONTAINS(GEOMFROMTEXT('POLYGON((-22.892726399999997 -47.05525290000003,-22.891496748403178 -47.05564986693423,-22.89
我有一个具有以下模式的复杂位置数据库:
table States
id : INT PK AutoIncrement
name : VarChar 50 UNIQUE
table Counties
id: INT PK AutoIncrement
stateID : INT ForeignKey ->States(id)
name : VARCHAR(50)
table Towns :
id: INT PK AutoIncrement
stateID : INT ForeignKey ->States(id)
countyID : INT ForeignKey ->C
我正在升级库存数据库,并希望加快查询速度。大部分排序是在2列上进行的,每列都是一个范围。例如。
SELECT ....
WHERE price BETWEEN 10.50 AND 34.20
AND date BETWEEN 1311264060 AND 1313942460
ORDER BY stockNo LIMIT 100
我知道因为使用了范围,所以MySQL只能在一列上使用索引。换句话说,它可以使用索引来提取与价格范围匹配的记录,但随后必须借助于表扫描来查找与日期范围匹配的记录。
我的想法是假设价格和数据是x和y轴,填充一列空间数据,并利用MySQL、空间搜索和R-TREE索引来提取
我使用的是mysql数据库,它只有一个表"data"和17,151257 rows.This表有一个列字符串。我希望打印字符串列中包含特定查询字符串(存储在"entered_query“变量中)的所有行,因此我使用了以下方法:
SELECT DISTINCT * from data WHERE string LIKE '%".$entered_query."%' limit 10
很明显,上面的查询要花费太多的时间来执行。
我读过索引是可以使用的,但在这种情况下如何使用呢?
我还考虑过将整个数据划分为10个不同的行,然后使用perl D
这是用于InnoDB和MySQL 5.7的。
如果我有这样的查询:
SELECT A, B, C FROM TABLE WHERE STRCMP(D, 'somestring') > 0
是否可以在D上建立一个可供查询使用的索引?也就是说,MySQL是否足够聪明地为STRCMP函数使用btree索引?
如果没有,我如何才能重新设计查询(和/或表),以便能够对D进行字符串比较,并且可以进行某种形式的剪枝,从而不必命中每一行?
我使用 (修改的预顺序树遍历)模型将分层数据存储在MySQL表中。(MPTT模型:另一种描述是嵌套集模型。)我的问题是:有人想出了一种聪明的方法来对树上的查询结果进行排序吗?我可以按标签排序,但是结果集将按标签排序,而不考虑节点在树中的位置或深度。
下面是一个用于检索任意节点树的查询示例,每个节点的深度如下:
SELECT node.id, (COUNT(parent.id) - (sub_tree.depth + 1)) AS depth
FROM person AS node,
person AS parent,
person AS sub_parent, (
SELECT nod
嗨,我对MySQL指数有一定程度的了解。
创建表时,我可以创建一个索引
CREATE TABLE Product (
-> ID SMALLINT UNSIGNED NOT NULL,
-> ModelID SMALLINT UNSIGNED NOT NULL,
-> PRIMARY KEY (ID),
-> INDEX (ModelID)
在创建表之后添加索引
CREATE INDEX index_name
ON table_name (column_name)
还可以通过以下方式更改索引
ALTER TABLE
如果我们有这样的桌子
消息: Id (INT) \x{e76f}消息(文本)\日期(TIMSTAMP)
让我们想象一下,不断有数据出现在这个表中。例如
1,“你好世界”,12345678;
2,“Yoooo”,12345679;
3,“我的名字叫哈尔!”,12345680;
现在这个表很大,永远不会被删除。
SELECT * FROM articles WHERE MATCH (message) AGAINST ('Hal');
现在这是否可行,其中的缺陷是什么?
我也在想,每天都有一个群体的价值。因为大多数查询都是在哪一天传入的,所以如果我们将DB结构更改为
消息: I
我意识到这是一个元编程问题,但我假设这里有足够的有经验的人来给出一个像样的答案。
我只是在重新构建一个查询,以便从一个表中检索一些数据。
SELECT pl.field1, pl.field2
FROM table pl
LEFT JOIN table2 dp on pl.field1 = dp.field1
WHERE dp.field1 IS NULL
执行此查询需要很长时间(1800+秒)。
当我厌倦了等待,并努力EXPLAIN查询,结果是一个完整的表扫描已经完成。
我在dp.field1上创建了一个索引,之后查询几乎是即时的,创建该索引所花费的时间还不到一秒钟。
从EXPLAIN来看,
我正在使用一个MariaDB (MySQL)表,该表包含一些地图点(纬度和经度)和数量的信息。
我正在进行许多检索这些点的查询,我希望使用索引优化查询。我不知道怎么把它做好。
我的问题如下:
SELECT p.id, p.lat, p.lon, p.quantity
FROM Points p
WHERE ((p.lat BETWEEN -10.0 AND 50.5) AND
(p.lon BETWEEN -30.1 AND 20.2) AND
(100 <= p.quantity AND 2000 >= p.quantity))
ORDER
我正在尝试理解MySQL中的索引。我知道,在表中创建的索引可以加快查询的执行速度,并且可以减缓行的插入和更新。
在创建索引时,我在一个名为authors的表上使用了这个查询,该表包含(AuthorNum、AuthorFName、AuthorLName、.)
Create index Index_1 on Authors ([What to put here]);
我知道我必须放一个列名,但是哪一个?
,当用户查询表或什么时,我是否必须将将要比较的列名放在Where语句中?
我有一个名为"demo_dev“的数据库,并添加了一个名为"countries”的表。
我希望在一个列上创建一个位图索引,比如区域,因为它的唯一值较少,使用下面的查询。
CREATE BITMAP INDEX ON countries (region);
它引发了一个错误,如下所示:
您的SQL语法出现错误;请检查与您的MySQL服务器版本对应的手册,以获得使用“国家(地区)位图索引”附近的正确语法。
要使它成功运行,应该做些什么?
我刚刚引用了以下链接:http://dev.mysql.com/worklog/task/?id=1524
mysql版本: 5.5