sql - 当标志列是约束时 SELECT 查询变慢

标签 sql mysql

我有一个相当简单的表,称为小部件。每行包含一个 id、一个描述和一个 is_visible 标志:

CREATE TABLE `widgets` (
  `id` int auto_increment primary key, 
  `description` varchar(255), 
  `is_visible` tinyint(1) default 1
);

我想发出一个查询,选择可见小部件子集的描述。下面的简单查询就可以解决这个问题(其中 nm 是整数):

  SELECT `description` 
    FROM `widgets` 
   WHERE (`is_visible`) 
ORDER BY `id` DESC 
   LIMIT n, m;

不幸的是,按照编写的那样,此查询必须扫描至少 n+m 行。有没有办法通过重新设计查询或修改架构来使该查询扫描更少的行?

最佳答案

使用索引以获得更快的查询结果:

ALTER TABLE `widgets` ADD INDEX ( `is_visible` ) 

关于sql - 当标志列是约束时 SELECT 查询变慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2226665/

相关文章:

SQL查询: To find an actors who did more films with Quentin Tarantino

sql - mysql 三联结

sql - Teradata 中的 DECIMAL 类型

sql - SQL (Oracle) 中的递归计算

mysql - 我如何从单个查询中的四个不同表中获取总数

mysql - 为什么我在尝试使用 mysql-query 更新属性时遇到此语法错误?

sql - 使用单数据库多架构的 ASP.NET MVC Multi-Tenancy 应用程序 : Calling Store Procedures from the application tries to access dbo tables

mysql - 从多对多字段 django 中获取所有唯一/不同的元素

php - 在帖子列表中突出显示当前帖子元素 - PHP

MySQL 从两个或多个结果集中创建一行