我使用的是MySQL,我有一个数据库,我试图使用它作为数据的规范版本,我将存储在不同的索引中。这意味着我必须能够通过主键快速地从其中检索一组数据,但我还需要在输出时对其进行排序。我不知道如何让MySQL高效地做到这一点。
我的桌子看起来如下:
CREATE TABLE demo.widgets (
id INT AUTO_INCREMENT,
-- lots more information I need
awesomeness INT,
PRIMARY KEY (id),
INDEX IDX_AWESOMENESS (awesomeness),
我们的MySQL(Percona Server)数据库有一个包含1000万行的大表,有很多比40秒更长的慢查询:
SELECT col1, Seller, col3, col4, Id, col5
FROM table1
WHERE Seller = 346761
AND col1 IN (2, 3, 4)
AND col3 = 1
AND col4 NOT IN (5,6,7)
ORDER BY Id DESC
LIMIT 0, 20;
我在Seller、col1、col3、col4上创建了索引。这些索引是单独的,而不
这是我的第一篇帖子,所以我希望我遵守所有的惯例:
我有一个带有x和y坐标的MySql数据库和一个接收其他x和y坐标的php服务。我要计算平方距离:(x2-x1)^2 + (y2-y1)^2,并从最近到最远排序。
SQL查询(在php中)是:
SELECT ((x_coor-$x)*(x_coor-$x)+(y_coor-$y)*(y_coor-$y)) AS SquareDis FROM $table ORDER BY SquareDis
在SQL查询或php程序中这样做对性能有什么影响呢?
谢谢你提前给出的答案!
想知道,从Mysql获取所有数据(在PHP数组中没有order和sort )会更快,或者Mysql的订单会更快吗?
例如,有一个名为"emp_info“的表
id
1
2
3-乔伊-乔伊
所以让我们假设数据库中有100到200条记录。
如果我想按字母顺序显示记录,那么什么会更快呢?:
SELECT * FROM emp_info ORDER BY city;
或
SELECT * FROM emp_info;,然后按城市列对PHP数组进行排序。
即使城市列上有秩序,那么哪种方法会更快呢?
谢谢。
假设我有一个数据库,其中有3个表描述了总线时间表:
journey
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL |
为什么下面的查询在mysql中花费了这么多时间,而在oracle中却没有
select * from (select * from employee) as a limit 1000
我在oracle和MySQL数据库中使用这个表中的50,000,000条记录测试了这个查询。
我知道这些查询应该写成这样
select * from employee limit 1000
但是为了向我们的自定义动态网格显示数据&总行数,我们只有一个查询,我们使用简单的select * from employee查询,然后添加limit或其他条件。
我们缩短了这个问题的时间。
但我的问题是“为什么在mys
我在mysql数据库中有一张表。我的查询看上去像是
SELECT device_id,date,timestamp,power,floor
from tableData
where date=%s
and floor=%s
order by timestamp desc
limit 1
为了更快的结果,我在我的表上创建了索引。我的索引:
+------------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+-----
我知道SQL只能返回一定数量的行,如:
MySQL:select ... order by num desc limit 10
Oracle:WHERE ROWNUM <= 10 and whatever_else
但我的印象是,这些用户通过查找符合"where“条件的所有条目来执行,然后只返回其中的一个子集。
我想告诉它的是,“给我你遇到的满足我的条件并停止执行的第一个N个条目”,这样如果我只想要一个DB中某些数据的示例而不是所有的数据,我的查询就会执行得非常快。
有人知道如何在MySQL和/或Oracle中这样做吗?Oracle SQL首选,但任何帮助都是感激的。
另外,正
对于WordPress,我使用相同的源代码和相同的数据库,只是mysql版本不同。这使我的页码帖有重复之处。这是我发现的。知道怎么用更高的版本来解决吗?
这是针对第2页和第3页查询输出的。左边是MySql 5.5,右边是MySql 5.6.up_posts.ID是独一无二的。
SQL语句:-
SELECT SQL_CALC_FOUND_ROWS up_posts.ID FROM up_posts WHERE 1=1 AND up_posts.post_type = 'post' AND (up_posts.post_status = 'publish' OR
网上已经有很多帖子了,只是想弄明白一些让我困惑的细微之处!
引用
如果将限制row_count与ORDER相结合,MySQL在找到排序结果的第一个row_count行后就停止排序,而不是对整个结果进行排序。如果使用索引进行排序,这是非常快的。
与
它将首先订购,然后得到前20。数据库还将处理WHERE子句中的任何内容。
从问题中提取相同的查询:
SELECT article
FROM table1
ORDER BY publish_date
LIMIT 20
假设表有2000行,其中query将返回20行,现在,查看mysql ....stops sorting as so
我在玩SQLite的时候,在非常小的数据集上遇到了CROSS JOINS的奇怪的性能问题。例如,我在SQLite中做的任何交叉连接都比mysql中的相同交叉连接花费大约3倍或更长的时间。例如,下面是mysql中3,000行的示例:
select COUNT(*) from (
select * from main_s limit 3000
) x cross join (
select * from main_s limit 3000
) x2 group by x.territory
SQLite是否使用与其他客户端-服务器数据库不同的算法或其他方式来执行交叉连接或其他类型的
我可能是错的,但似乎是不同的意见在互联网络上这些是什么。Server、MySQL、DB2和PostgreSQL为这些表显示了不同的定义。
阅读了大量不同供应商的资料(数据库手册、用户帖子等)我能够区分三种类型的感兴趣的表格(对于这个问题,有很多,更多的类型没有兴趣)。请容忍我:
堆表
- All rows are stored (probably unordered) in the heap table.
- Each row has an internal ROWID that identifies it.
- Indexes are optional. If added, t
我有一个复杂的查询,我必须在一个给我带来一些性能问题的应用程序中运行。我把它简化了。数据库是MySQL 5.6.35在CentOS上。
SELECT a.`po_num`,
Count(*) AS item_count,
Sum(b.`quantity`) AS total_quantity,
Group_concat(`web_sku` SEPARATOR ' ') AS web_skus
FROM `order` a
INNER JOIN `order_item` b
我有一个包含两个整数列的主键的表。我在这张桌子上存了2亿行。我的程序需要获得由主键的列按相同顺序排序的完整表。
所以,我的查询看起来像Select * from MYTABLE order by PK1,PK2;
我注意到,查询没有立即发送数据,而是在“排序结果”状态下花费了大量时间。我认为mysql将使用主键索引以所需的顺序直接访问数据。但是,它似乎没有顺序地扫描它,然后对数据进行排序。
是否有可能改变行为并提高查询的效率?
备注:我尝试过使用MySQL5.5和mariadb10.2。
以下是一些有用的信息(我试图用索引列和非索引列解释一些订单,并给出相同的结果)。
mysql> sh
我有一个属于用户的用户、和数据库。根据用户相对于其他用户拥有的点数来对用户进行“排名”:这是通过一个嵌入式SELECT语句来完成的,该语句计算的所有用户的得分都比用户多。
这个数据库有10k个用户。下面的SQL查询使用MySQL ~0.16s来实现:
SELECT
*, (SELECT (COUNT(*) + 1)
FROM users AS UserHigher
WHERE UserHigher.points > User.points
) AS rank
FROM
users AS User
ORDER B
因此,我有一个相对简单的查询,根据几个条件从两个不同的MyISAM表中提取随机行:
SELECT
table1 . * , table2 . *
FROM
Table1 AS table1
LEFT JOIN
Table2 AS table2
USING (
col1
)
WHERE
table1.col1 != '5324372'
AND
table1.col2 LIKE 'S'
AND (
table1.col3 LIKE 'I'
OR table1.col3
我使用mysql Ver 14.14 Distrib 5.5.44, for debian-linux-gnu (x86_64) using readline 6.3
我有由order列排序的行。
结果,很多时候,订单数是相同的,比如说1。但是结果是以固定的顺序返回的。
SELECT * from mytable ORDER BY fooOrder;
如果fooOrder总是1,会返回排序的结果吗?
很明显有个命令,但我不知道是哪一个。
从MySQL表中选择列时,与列在表中的顺序相比,选择列的顺序是否会影响性能(不考虑可能覆盖列的索引)?
例如,您有一个包含行uid、name、bday的表,并且具有以下查询。
SELECT uid, name, bday FROM table
MySQL是否会以不同的方式看待以下查询,从而导致任何类型的性能影响?
SELECT uid, bday, name FROM table