Frozen / extremely slow when handling a 300-row table

There were several reasons why I decided not to even start out on Notion, and one of the relatively-minor ones involved the time it took to manage any Object (in Anytype-speak) that wasn’t small.

There are many reasons I feel Anytype is very promising, but today I found myself having to manage a medium-sized table with 300 rows and 5 columns. I copy-pasted this table from a website, and then decided that I don’t need 3 of the columns. So I selected a column, pressed delete, and… nothing. Frozen app. After 7 minutes I gave up, closed it, and once open the deleted column was gone. Same thing happened with the 2nd and 3rd column: having less data on the page doesn’t seem to mitigate the problem.

Is this even a bug, or a shared problem across the app infrastructure?

(For reference, I’m using the latest beta on a Windows 10 PC with a 16Gb of ram and a 5th-gen i5 processor. It’s old-ish so I’m used to things being a bit slow, but this is different.)

Granted, my PC is old-ish, but spreadsheet software can manage tables 100x the size without speed issues.

For reference, I’m using the latest beta version on a windows 10 system.

2 Likes

Since you are copy pasting from a website, I’m guessing this involved simple tables in the object canvas?
If that’s the case, then the lag is understandable since I doubt that AT has been optimized for something like that.
300 objects in a set, on the other hand, cause pretty much 0 lag for me.

So a page can’t hold a 300-row table? What can?

There might be a huge difference in performance between a page with a so called “simple table” which is a block within a single Object. Sets, however, are a way to display multiple Objects and their Relations in a Grid view (looks like a table).

The main difference is in what content you want to show, and how you want to interact with that content.

Simple tables are for, you guessed it: simple tables. Just a couple of rows and columns with some text in them.

Set are for displaying many Objects and their Relations. One of the ways to view those Objects is in a Grid view (resembles a table), but Kanban, List, and Gallery are other ways to view those same Objects. Each Object visible in a Set could contain one or more simple tables.

2 Likes

Another thing to keep in mind is that you can still use a dedicate spreadsheet software for something like this, and then just upload it to AnyType.

[EDIT: minor additions]

It’s a simple table. It has 300 rows, for the top 300 drugs prescribed. On the website I got it from there are five columns. 1) Ranking 2) Drug name 3) Number of prescriptions 4) Number of patients 5) Change in ranking from last year.

I don’t want to create a new object for each drug. I also don’t care for the number of prescriptions/patients or the change from last year. I just want the table format, so that I can create my own column for the drug class (“antibiotic”, “painkiller”, etc.)

I mean, yes, this could be done by creating 300 individual objects and adding to them 300 relations and then creating a set/category displaying them, but that’s both unnecessary and would take me longer than closing and opening Anytype 300 times after every freeze.

(At the same time I am creating hundreds of objects for other purposes: I’ll find out soon enough if a set of these objects displayed as a table can process without freezing or requiring entire minutes.)

Reiterating:

It’s just a medium-sized table. Perhaps not a small 3x3, but much closer to that than a database with hundreds of columns and ten thousand rows. It’s nothing complex, really, just one or two words per cell. Word can manage it, Libreoffice can manage it, spreadsheet software can obviously manage it. Notion can’t. Apparently Anytype can’t either. I’m not even talking about “advanced” operations like arranging by alphabetical order or value. I’m stuck with simply trying to delete a column. Am I expecting too much? Will this change, or is this inherent to the way a table-block is handled within an object?

(P.S., I tried saving the table in Excel and uploading the file. I just get an icon with a link to the file.)

1 Like

Not a solution, but have you tried creating in Excel then copy/pasting into Anytype?

I tried that just now. Copy-pasted the table to Excel, then copy-pasted the table from Excel to Anytype. The paste in Anytype, curiously enough, is of an image. If I ctrl+shit+v I get the data as text, but without the table formatting.

(I got used to ctrl+shift+v with Anytype because of random line breaks coming through Firefox, but that’s a relatively minor annoyance and apparently not Anytype’s fault)

I just tried it on a Mac from Numbers; a straight paste creates an image. A paste and match style creates a long pause and then, eventually, a table. Which sounds like your original problem - very slow.

I think you have to distinguish between simple tables (which is only a text element such as a list or a code block) and sets or collections, which are treated as a kind of database. Those structures are optimized for large amounts of data, while simple tables aren’t.

2 Likes

I know the difference between sets/collections and tables. It’s a simple table. A single word per cell, in a total of 900 cells. That’s about two pages of text in total, not something that could be expected to be a problem.

1 Like

The thing that’s the problem here is that simple tables aren’t designed to hold that much data. So in a way it’s just a problem of you epecting too much. Not something that really needs improvements either since AnyType is not a spreadsheet editing software. I would really just recommend using Excel for this usecase.

How are 900 words arranged in 3 columns “that much data”? This isn’t a use case for spreadsheet software. It’s not a database, no data manipulation or formulas are needed, just 300 words with adjacent words. I have pages with far more data on them that work just fine. I’d like to think this is something that can be solved, but if Anytype is using the same engine as Notion I guess it’s an inherent problem with table blocks.

It is just a problem with table blocks. And it’s not that much data in general just too much for a single block. As the others have said: A set with that many rows and columns would work no problem. Which is what AnyType and Notion are both designed for I guess. This could maybe still improve in the future.

Possible Workaround:
While I do not know if I have done 300 fields, I have run into this limitation where anytype lags or it copies a photo instead of the table. Fingers crossed this works for you. :crossed_fingers:

  1. Copy table into Libre Office Calc.
  2. Export spreadsheet as .HTML (This might work with other spreadsheet applications. I think whether or not it works will depend on how “rudimentary” the html formatting is.
  3. Select fields, copy and paste into Anytpe. Try Cntrl+V and if that does not work use Anytype’s “Edit” drop down menu (top of applications) and select “Paste”

LibreOffice’s html export is pretty rudimentary, but my working theory is that is why this sometimes works. Anytype is either having issues parsing the pasted text or storing it in the table block or maybe even a combination of both. 300 words= ~1500 characters without any formatting. It could be on the backed, that Anytype is trying to to squeeze all those characters into a single “field” or that it is having issues processing all the characters with formatting after the paste command.

Tables are tricky and many applications struggle to get the to work well. Based on what I have seen, I think the Anytype team will want to make tables work well.

I personally would like to be able to import data from a spreadsheet file, directly into a table or set. Even better would be the ability for anytype to monitor that xls, cvs file and update when changes are made to it. :slightly_smiling_face:

See FeatureRequest: Import from CSV, Excel, Calc, Google Sheets etc

2 Likes

Just for fun: I tried to make a 10000x10000 simple table. It seems to be locked at 25x25 for now. I think that says enough about its intended use :slight_smile:

After filling the table and duplicating it a couple of times, Anytype became a bit sluggish with data entry, but it did not crash!

2 Likes

Another limitation of tables I’ve noticed is that most text styling options are gone. No bullet points, headings, etc. (only bold, italics, colors left). Also missing is the option to change the background on alternating rows, but I guess that’s only useful with larger tables (which aren’t supported anyhow.)

I realize it’s not what tables are “for”, if usage is pre-determined and intentionally crippled, but they are also a “hack” to align structured text people use all the time. Yes, I know I can have vertical columns of text also by dragging a block to the end of a line. I love it, do it all the time, but the vertical lines don’t “snap” to match, so they’re never 100% aligned. It might sound a bit OCD to complain about, but in truth I just live it. (There are also some bugs with the column structure. E.g., try to cut a single word and all of the block disappears.)

Here’s a screenshot being an example for both issues: I can’t have bullets in a table, but I can’t align the right column in a straight line:

4 Likes

@sofalakatino thanks for the additional information. I agree that the basics of the simple table should just work, and it should definitely not feel like a restricted feature. I think the use cases (and its resulting requirements) around structured data organization in Sets with a grid view and simple tables are not completely clear yet.

I can see a feature where you start with a simple table which becomes more and more complex, until it is better/easier/more performant to switch to Objects in a Set. IMO, it would be very cool to allow users to turn a simple table into a Set by mapping columns to Relations (with either all Objects of a single type, or a column to assign the Type for each row in the simple table).

3 Likes

Yes please. In fact, double yes please.

2 Likes

Well, yes. I can see how the first row on a table (or the first column, or both) can be a fixed Relation for a series of objects in a table, and how it can be useful to create a set of objects from a table. But while useful, that’s a more “advanced” feature, while currently the implementation of tables is still missing basic features. Like being able to work past 25 rows. Or being able to merge two adjacent cells. Or allowing basic formatting in the cells. These things have been pointed out a year ago (see here and here).